mahlemiut WIP
Moderators: mahlemiut, seymour, QRS
Kluge fix
I could've saved myself a lot of time if I had known someone else was working on this. I used your code to throw in some of my changes. I think I've got the kludge fixed. Also, the read from a02001, unless I miss my guess, is because ic36 is a00000-a03fff. I'm not sure about it, and I'm too tired to look at it now, but that's my guess, anyway. Also, I noticed that at bank select 142, it's sometimes writing to 9200. This corresponds to a12000, which is the z80 reset address. I think this needs to be thrown in. I threw in my notes on the f402/f204/a10007 in case those are helpful.
Awesome! This solves some of the headaches. It introduces the odd problem, though. In particular, the BIOS doesn't return from test mode.
Only change I've made so far is this:
[in bank_w]:
if(offset >= 0x2000 && (bios_width & 0x08))
// ic36_ram[offset] = data;
ic36_ram[offset - 0x2000] = data;
Just switched the commented lines. This makes the IC36 RAM test pass, and the instructions appear too (the BIOS writes them there).
If you're right about IC36 being 0xa00000-a03fff, then the flipped bytes of the game DIPs should be at 0xc000. Number of credits should be 0xc001 (gaxe2 uses this for it's own display).
Only change I've made so far is this:
[in bank_w]:
if(offset >= 0x2000 && (bios_width & 0x08))
// ic36_ram[offset] = data;
ic36_ram[offset - 0x2000] = data;
Just switched the commented lines. This makes the IC36 RAM test pass, and the instructions appear too (the BIOS writes them there).
If you're right about IC36 being 0xa00000-a03fff, then the flipped bytes of the game DIPs should be at 0xc000. Number of credits should be 0xc001 (gaxe2 uses this for it's own display).
- Barry Rodewald
MARP Assistant Web Maintainer

MARP Assistant Web Maintainer

Multi ROM support
Ah, yes. I had the addressing correct in mine because I did it in a slightly different way, but rechecking mine, it was mapping to a02000.
Some other stuff I didn't include in my update:
I think this allows multiple carts to be used. It makes the memory test do an additional 3 main/sub slot pair checks:
In megaplay_bios_6600_r
return (bios_6600 & 0xfe) | (bios_bank & 0x01);
I was just looking at this and I think adding support for multiple roms would just be a simple task of loading all of the ROMS and MUXing 0x000000-0x3fffff based on 6203 & 0x03.(selecting for all you non-EE's).
This also makes it look like the 68000 reset should be reset on transition from (6403 & 0x0c) from 0x0 to 0xc not c to 0. (which is not how I had it).
One other small change. Switching requires the use of the select button, which is 6400 bit 0. The beginning of my MEGAPLAY_TEST section:
#define MEGAPLAY_TEST \
PORT_START \
PORT_BITX( 0x01, IP_ACTIVE_LOW, IPT_SERVICE2, "Select", KEYCODE_0, JOYCODE_NONE ) \
So changing the bitx line maps to something other than the player2 input.
Some other stuff I didn't include in my update:
I think this allows multiple carts to be used. It makes the memory test do an additional 3 main/sub slot pair checks:
In megaplay_bios_6600_r
return (bios_6600 & 0xfe) | (bios_bank & 0x01);
I was just looking at this and I think adding support for multiple roms would just be a simple task of loading all of the ROMS and MUXing 0x000000-0x3fffff based on 6203 & 0x03.(selecting for all you non-EE's).
This also makes it look like the 68000 reset should be reset on transition from (6403 & 0x0c) from 0x0 to 0xc not c to 0. (which is not how I had it).
One other small change. Switching requires the use of the select button, which is 6400 bit 0. The beginning of my MEGAPLAY_TEST section:
#define MEGAPLAY_TEST \
PORT_START \
PORT_BITX( 0x01, IP_ACTIVE_LOW, IPT_SERVICE2, "Select", KEYCODE_0, JOYCODE_NONE ) \
So changing the bitx line maps to something other than the player2 input.
Re: Multi ROM support
Ok, that makes sense. The BIOS often wrote 0x00 then 0x0c in pairs. Made that change. (It's 6404 & 0x0c, btwGreyRogue wrote:This also makes it look like the 68000 reset should be reset on transition from (6403 & 0x0c) from 0x0 to 0xc not c to 0. (which is not how I had it).

Added this too, it is good to know about as much of the inputs as possible, even though it wouldn't be of use for MAME. It'll probably be useful to document it in the driver though.GreyRogue wrote:One other small change. Switching requires the use of the select button, which is 6400 bit 0. The beginning of my MEGAPLAY_TEST section:
#define MEGAPLAY_TEST \
PORT_START \
PORT_BITX( 0x01, IP_ACTIVE_LOW, IPT_SERVICE2, "Select", KEYCODE_0, JOYCODE_NONE ) \
So changing the bitx line maps to something other than the player2 input.
EDIT: It should also be noted that it's only Sonic that doesn't return from test mode. GA2 and TWC exit test mode fine.
- Barry Rodewald
MARP Assistant Web Maintainer

MARP Assistant Web Maintainer

Megatech bugs
Megatech bugs
Megatech Golden Axe: Control input in Megatech - Golden Axe is broken
When you press a key the game is paused. It's fine in Megatech - Golden Axe II
Megatech Golden Axe 2: after a time (in the begining of the 2th stage) the keys don´t accept any order, and the character stops (in .83). It was fine in .82
Megatech Golden Axe: Control input in Megatech - Golden Axe is broken

When you press a key the game is paused. It's fine in Megatech - Golden Axe II
Megatech Golden Axe 2: after a time (in the begining of the 2th stage) the keys don´t accept any order, and the character stops (in .83). It was fine in .82
Quickie fix for Recalhorn (prototype).
Sound works better, although still not perfect.
Code based on 0.87u2.
Sample: http://mahlemiut.marpirc.net/recalh-0050.mp3
Sound works better, although still not perfect.
Code based on 0.87u2.
Sample: http://mahlemiut.marpirc.net/recalh-0050.mp3
- Barry Rodewald
MARP Assistant Web Maintainer

MARP Assistant Web Maintainer

ROM_REGION16_BE(0x1000000, REGION_SOUND1 , ROMREGION_SOUNDONLY | ROMREGION_ERASE00 )
ROM_LOAD16_BYTE("rh_snd0.bin", 0x000000, 0x200000, CRC(386f5e1b) SHA1(d67d5f057c6db3092643f10ea10f977b1caa662f) )
ROM_RELOAD( 0x400000, 0x200000)
ROM_LOAD16_BYTE("rh_snd1.bin", 0x800000, 0x100000, CRC(ed894fe1) SHA1(5bf2fb6abdcf25bc525a2c3b29dbf7aca0b18fea) )
ROM_RELOAD( 0xa00000, 0x100000)
ROM_RELOAD( 0xc00000, 0x100000)
ROM_RELOAD( 0xe00000, 0x100000)
this code looks a bit cleaner (doesn't load over the top of the rom)
does it still sound as good?
ROM_LOAD16_BYTE("rh_snd0.bin", 0x000000, 0x200000, CRC(386f5e1b) SHA1(d67d5f057c6db3092643f10ea10f977b1caa662f) )
ROM_RELOAD( 0x400000, 0x200000)
ROM_LOAD16_BYTE("rh_snd1.bin", 0x800000, 0x100000, CRC(ed894fe1) SHA1(5bf2fb6abdcf25bc525a2c3b29dbf7aca0b18fea) )
ROM_RELOAD( 0xa00000, 0x100000)
ROM_RELOAD( 0xc00000, 0x100000)
ROM_RELOAD( 0xe00000, 0x100000)
this code looks a bit cleaner (doesn't load over the top of the rom)
does it still sound as good?
http://wolfmame.marpirc.net/wolf087u1-recalhfix.zipQRS wrote:Wow! Better sound! It sure makes the game even more fun
Tiny build, supporting only Recalhorn.
Should be compatible with current inps.
- Barry Rodewald
MARP Assistant Web Maintainer

MARP Assistant Web Maintainer

Already up and runningmahlemiut wrote:http://wolfmame.marpirc.net/wolf087u1-recalhfix.zipQRS wrote:Wow! Better sound! It sure makes the game even more fun
Tiny build, supporting only Recalhorn.
Should be compatible with current inps.

QRS