Jump to content
IGNORED

2600 Rom Comparisions and Dumps


Omegamatrix

Recommended Posts

Rom after looking at my disassembly, this looks like how the branching goes:

 

post-7074-1224586793_thumb.jpg

 

 

I'm making the assumption that Funvision is the original company. Right now my best guess at an approximation of what the original Funvision rom would look like is to take the PAL Unknown + Funvision logo + fix the clear loop. All those parts together would give the closest we can get without the actual rom.

 

 

Otherwise you can't really say one branch is older then the other. The "missing link" is still missing.

Link to comment
Share on other sites

Nukey (or Thomas) I left some constants in my disassembly as UNK_01, UNK_02, etc.. I don't have time to look up what they do for about a week, so if you feel like figuring them out in the meantime please do. I just do this at the beginning just to get everything to compile together. I never meant to release the disassmbly before finishing it (haven't really done much), but the topic came up. I have a feeling some of them are pointer to low nybbles, and maybe some colors? That would explain some of the Zellers variances.

 

 

@ Thomas and Rom I realize that the word I used before "overdump" is wrong. It is not really an overdump because the code is not repeated. I meant to say doubled up.

 

 

There are two issues I'm trying to deal with. One is the actually Challenge rom. I think we have established now that HES took the rom from somewhere else. I'm trying to look at actual changes that they did to the Challenge rom, and not the entire multicart. That is why I split it.

 

 

The other is the functionality of the intact HES rom. I will look at this more tomorrow night. I remember reading somewhere you could reach Surfers Paradise with one of the difficulty switches or was it a dip switch? If it is a dip switch then when you split the rom in two it both halves should work as individual games. However when I tried it did not. I will pull the Krok out tomorrow and see if it is an emulator issue by testing the 8k and 4k split that contains Surfers Paradise. If they don't work then it is either a bad dump, a split rom, or a disabled rom (disabled for Surfers Paradise).

 

 

Rom what I need to know is if you are supposed to be able to access the Surfer's Paradise on the HES Challenge game. I'm not talking the two pack here, but the actual black label HES Challenge. I just pulled that black label out of my memory. Hope I got it right. I'm really tired...

Link to comment
Share on other sites

Rom what I need to know is if you are supposed to be able to access the Surfer's Paradise on the HES Challenge game. I'm not talking the two pack here, but the actual black label HES Challenge.

AFAIK, when the right difficulty switch is in the A position, the game starts up as Surfer's Paradise.

 

8)

Link to comment
Share on other sites

The other is the functionality of the intact HES rom. I will look at this more tomorrow night. I remember reading somewhere you could reach Surfers Paradise with one of the difficulty switches or was it a dip switch? If it is a dip switch then when you split the rom in two it both halves should work as individual games. However when I tried it did not. I will pull the Krok out tomorrow and see if it is an emulator issue by testing the 8k and 4k split that contains Surfers Paradise. If they don't work then it is either a bad dump, a split rom, or a disabled rom (disabled for Surfers Paradise).

IIRC the cart starts up in one bank (the Challenge one) and then switches to the other bank (Surfer's Paradise), depending on the dip switch(?) settings. Should be easy to find out by disassembling.

Link to comment
Share on other sites

I originally had PAL Unknown for the NTSC Unknown in the disassembly. I just fixed it now. I made this mistake because that is what Stella listed it as. When I checked the scan line count though it was only 276 lines; so if you are reading this Stephena you might want to change the .pro file.

 

 

This comes up as PAL unknown in Stella, but is NTSC:

Confirmed. The auto-detect code actually sees its as NTSC, but it's hardcoded as PAL in the properties. I'll fix this for a future release (as well as take a closer look at all hardcoded NTSC/PAL entries in the stella.pro file, as most of them probably aren't needed any longer).

Link to comment
Share on other sites

A different cassette loader only...all changes occur PAST the initial 6k:

 

Interesting that the "preview"'s loader has so much that is zeroed.

Interesting.

 

Thanks.

 

Ok, I checked all the Arcadia / Starpath ROMs and renamed some of them.

 

None removed, though.

 

8)

The differences in the Killer Satellites binaries are probably due to the buffer in the tape conversion program not being initialized to zero either. Starpath games can have a maximum of 6K per load, so all the data above 0x1800 never gets sent to the Supercharger.

 

The header data above 0x2000 contains information like what address to load each 256 bytes page to and where to start execution of the code. Only 56 of the 256 bytes in the header are actually used. There is no reason why there should be anything but zero stored in the 200 unused bytes of the header in the binary. The 'full' version of Killer Satellites not only has all this garbage data in the header, it also has incorrect values for the checksum bytes for all 24 pages of game code at 0x2040. Therefore I would say that the preview version is actually a good dump and the other version could be deleted. And if the other questionable Starpath ROMs also only differ in the data above 0x1800, then you can delete the ones that don't contain mostly zeros there as well.

 

 

Ciao, Eckhard Stolberg

Link to comment
Share on other sites

IIRC the cart starts up in one bank (the Challenge one) and then switches to the other bank (Surfer's Paradise), depending on the dip switch(?) settings. Should be easy to find out by disassembling.

Ok, this is how it goes:

 

Split the ROM and start the first part with right difficulty A.

Link to comment
Share on other sites

IIRC the cart starts up in one bank (the Challenge one) and then switches to the other bank (Surfer's Paradise), depending on the dip switch(?) settings. Should be easy to find out by disassembling.

Ok, this is how it goes:

 

Split the ROM and start the first part with right difficulty A.

This worked on real hardware. :) The split 4k rom (containing Surfer's Paradise), and the doubled up Challenge rom both starteed Surfer's Paradise with the Right difficulty switch set to "A", the expert setting.

 

 

Emulation was a different story...

 

 

- For Z26 I used X26's graphical interface, and went into "settings", "start game with", and checkmarked "Player 1 hard". That was pretty easy; worked on the 4k rom, but not the 8k rom (I just got Challenge). The nice thing about X26 is the settings are global, so you don't have to do it for each rom.

 

I have also used X26 when I wanted to verify which games used the Superchip. I put all the games I suspected in a folder, override the Bankswitching to 16k Superchip, and simply clicked on all the roms to see what at least booted up (you still have to test them further). With Stella I couldn't figure out how to do that for all the games in the folder. I had to change each game individually and it was a real pain in the arse. Stella will be much better if Stephena is able to implement a switch to show you the Bankswitch scheme it autodetects.

 

 

- For Stella I couldn't get it start with the right difficulty switch set to hard. Pretty sure there is a way though... I tried clicking on the rom before hand, and went into input settings, clicked on "P1 difficulty A", clicked "map", clicked "ok" for the action. Then tried the game but it didn't work that way.

 

I finally used the command line and set the break point at $FFFC. Then once in the debugger I clicked the I/O tab and scrolled the "P1 diff:" to "A/hard", and exited the debugger. Result was the 4k split game would now start, but just like Z26 the 8K would still not work (I would just get Challenge).

 

 

 

My question for the emulator experts here is what is happening with the 8k rom? Why won't it let you acess Surfer's Paradise? Is there an easy way to config the switches in Stella before you start the game?

Link to comment
Share on other sites

With Stella I couldn't figure out how to do that for all the games in the folder. I had to change each game individually and it was a real pain in the arse. Stella will be much better if Stephena is able to implement a switch to show you the Bankswitch scheme it autodetects.

This can be done from the commandline, but I agree that there should be an option in GUI to temporarily override settings for all ROMs. I'll add this for the next release.

- For Stella I couldn't get it start with the right difficulty switch set to hard. Pretty sure there is a way though...

Only from the commandline, as mentioned above.

I tried clicking on the rom before hand, and went into input settings, clicked on "P1 difficulty A", clicked "map", clicked "ok" for the action. Then tried the game but it didn't work that way.

This would change the key mapped to the "P1 difficulty A", which is by default F4. I'm not sure why you'd want to do that, though. To change the properties for a ROM (ie, the difficulty switch), you'd use the 'Game Properties' instead. But as I said above, I agree that there should be a GUI option to temporarily override the per-ROM properties and use global settings.

I finally used the command line and set the break point at $FFFC. Then once in the debugger I clicked the I/O tab and scrolled the "P1 diff:" to "A/hard", and exited the debugger. Result was the 4k split game would now start, but just like Z26 the 8K would still not work (I would just get Challenge).

If you're dropping to the commandline, the appropriate command would have been: stella -rd A ROMNAME. The '-rd' sets ®ight (D)ifficulty, and the 'A' is for hard/advanced.

My question for the emulator experts here is what is happening with the 8k rom? Why won't it let you acess Surfer's Paradise? Is there an easy way to config the switches in Stella before you start the game?

I can't answer the first part without further research, but as to the latter, Stella will be improved in this area in a future release.

Link to comment
Share on other sites

IIRC the cart starts up in one bank (the Challenge one) and then switches to the other bank (Surfer's Paradise), depending on the dip switch(?) settings. Should be easy to find out by disassembling.

Ok, this is how it goes:

 

Split the ROM and start the first part with right difficulty A.

This worked on real hardware. :) The split 4k rom (containing Surfer's Paradise), and the doubled up Challenge rom both starteed Surfer's Paradise with the Right difficulty switch set to "A", the expert setting.

 

 

Emulation was a different story...

OK, here's what happened with Stella in my testing.

 

First of all, I split the 8K file into two 4K pieces. I'll label these 4K_1.bin and 4K_2.bin (for the first and second pieces, respectively), and the original as 8K.bin, and BS stands for bankswitching type:

 

stella 4K_1.bin => Invalid ROM, nothing shown onscreen, auto-detected BS = 4K

stella -rd A 4K_1.bin => Start up Surfers Paradise, auto-detected BS = 4K

 

stella 4K_2.bin => Start up Challenge, auto-detected BS = 4K

stella -rd A 4K_2.bin => Start up Challenge, auto-detected BS = 4K (right diff A seems to have no effect)

 

stella 8K.bin => Start up Challenge, auto-detected BS = F8

stella -rd A 8K.bin => Start up Challenge, auto-detected BS = F8 (right diff A seems to have no effect)

stella -rd A -bs 4K 8K.bin => Start up Surfers Paradise, BS set to 4K

 

Conclusions:

 

1) Challenge is in the upper 4K, and is a normal, valid 4K ROM.

 

2) Surfers Paradise is in the lower 4K, and can only be accessed with right diff = A and when dealing with a 4K image.

 

3) I assume when right diff = B for the 8K image, the code 'jumps' to the upper bank and stays there, and with right diff = A, it stays in the lower 4K.

 

The last one tells the story. I suspect it has something to do with the hotspots, since both 4K images are detected (and run as) 4K format, but the 8K image used BS = F8. If I force the 8K ROM to be treated as 4K BS type, it correctly finds Surfers Paradise. So there's something in the ROM (or the emulation) that's causing the lower 4K image to be not treated as 4K. I'd need to look at the bankswitching hotspots for F8 to see what's going on.

Link to comment
Share on other sites

IIRC the cart starts up in one bank (the Challenge one) and then switches to the other bank (Surfer's Paradise), depending on the dip switch(?) settings. Should be easy to find out by disassembling.

Ok, this is how it goes:

 

Split the ROM and start the first part with right difficulty A.

This worked on real hardware. :) The split 4k rom (containing Surfer's Paradise), and the doubled up Challenge rom both starteed Surfer's Paradise with the Right difficulty switch set to "A", the expert setting.

 

Emulation was a different story...

Sorry for the flurry of messages, but I have yet more info on this:

 

1) Stella uses bank 1 of an 8K/F8 ROM as the 'reset bank'. This means each time the emulation is reset, bank 1 is where the code starts executing from.

 

2) The Challenge ROM (which is in bank 1) has no bankswitch commands, so it can't jump from bank 1 to bank 0. Hence, Surfers Paradise can never start.

 

3) Surfers Paradise (which is in bank 0) does have bankswitch commands. If the 8K ROM is started with right diff = A, those commands are never executed, and the cart stays in bank 0 (aka, Surfers Paradise). If it's started with right diff = B, the bankswitch commands are executed, and a jump is made to bank 1 (aka, Challenge).

 

So, it seems the emulation of F8 carts is in error, and that the reset bank is supposed to be bank 0, not bank 1. I have to test with other F8 ROMs and further research this. I'm not sure where that logic came from in the first place.

Link to comment
Share on other sites

So, it seems the emulation of F8 carts is in error, and that the reset bank is supposed to be bank 0, not bank 1. I have to test with other F8 ROMs and further research this. I'm not sure where that logic came from in the first place.

IIRC the start bank is undefined. All "well" programmed 8k+ ROMs start correctly from all banks.

 

But maybe bank 0 is the most likely. :ponder:

Link to comment
Share on other sites

1) Stella uses bank 1 of an 8K/F8 ROM as the 'reset bank'. This means each time the emulation is reset, bank 1 is where the code starts executing from.

 

IIRC didn't Stella have a change recently to cause the RAM to start up in a random state? Could you extend that to start up in a random bank as well, for >4k games? It would be a handy wake-up call for developers who don't properly code their start-up routines.

Link to comment
Share on other sites

So, it seems the emulation of F8 carts is in error, and that the reset bank is supposed to be bank 0, not bank 1. I have to test with other F8 ROMs and further research this. I'm not sure where that logic came from in the first place.

IIRC the start bank is undefined. All "well" programmed 8k+ ROMs start correctly from all banks.

 

But maybe bank 0 is the most likely. :ponder:

If this is the case (and it seems reasonable), why did the 8K ROM work on a real system? Shouldn't it have failed some/half of the time to start Surfers Paradise??

1) Stella uses bank 1 of an 8K/F8 ROM as the 'reset bank'. This means each time the emulation is reset, bank 1 is where the code starts executing from.

 

IIRC didn't Stella have a change recently to cause the RAM to start up in a random state? Could you extend that to start up in a random bank as well, for >4k games? It would be a handy wake-up call for developers who don't properly code their start-up routines.

Yes, it's quite easy to make this random. My main question is, should it actually be random (ie, is that the way real hardware works)?

Link to comment
Share on other sites

Yes, it's quite easy to make this random. My main question is, should it actually be random (ie, is that the way real hardware works)?

It depends on the "real hardware". Most programmable logic chips start up with registers cleared. So if the bank number is stored in a register then you will most likely start up in the bank which is stored at the beginning of the ROM chip. But only most likely, because typically there is no reset circuit which brings the hardware in a defined state. So especially if you switch the cart on and off quickly, you could get different results.

 

On the other hand you can make your "real hardware" such, that a cleared register leads to the selection of the upper bank instead of the lower bank. It is just a question how you control the address lines of the rom chip.

 

I can only say that the Krokodile will most likely start up such, that the registers are cleared and that means that the address line controlling the ROM bank is also most likely 0. This selects the lower 4K of the ROMs address space most of the time, but not always.

 

Other "real hardware" could do it differently. In emulation you can not emulate all possible hardware implementations at the same time. I would say you need to tell the emulator for each rom, where to start. Depending on the original hardware implementation.

 

Of course it is bad design if a 8K rom is unable to start in both banks and will always cause issues especially on real hardware.

Link to comment
Share on other sites

Of course it is bad design if a 8K rom is unable to start in both banks and will always cause issues especially on real hardware.

Then Stella should at least have a developer's switch which makes the startup back random.

This seems to be the best approach. I'm going to check all the F8 ROMs I have, and if most/all of them work with startup bank 0, I'll make that the default. But I'll also add an option to randomize the startup bank, which won't be used by default (only for developers). Then new developers can test with this option, to make sure their ROM is designed correctly to start from any bank.

Link to comment
Share on other sites

Of course it is bad design if a 8K rom is unable to start in both banks and will always cause issues especially on real hardware.

Then Stella should at least have a developer's switch which makes the startup back random.

This seems to be the best approach. I'm going to check all the F8 ROMs I have, and if most/all of them work with startup bank 0, I'll make that the default. But I'll also add an option to randomize the startup bank, which won't be used by default (only for developers). Then new developers can test with this option, to make sure their ROM is designed correctly to start from any bank.

 

Try Berserk VE, I think it needs a special bank as well. It only starts ok in 50% of the cases on the Krokodile

Link to comment
Share on other sites

Stephena, thank you in advance for putting in the GUI to predetermine the switches. :)

 

 

I tried the 8k rom in my Krok many more times, but was unable to make it fail. I wish I had a real cartridge to try. I'm curious how the bankselect logic works for the IC now, whether it gets cleared at startup or not. This might vary from chip to chip too.

Link to comment
Share on other sites

I tried clicking on the rom before hand, and went into input settings, clicked on "P1 difficulty A", clicked "map", clicked "ok" for the action. Then tried the game but it didn't work that way.

This would change the key mapped to the "P1 difficulty A", which is by default F4. I'm not sure why you'd want to do that, though. To change the properties for a ROM (ie, the difficulty switch), you'd use the 'Game Properties' instead.

Ahh, there it is. I don't know why I was trying to map the key. Thank you!! :)

Link to comment
Share on other sites

Stephena, thank you in advance for putting in the GUI to predetermine the switches. :)

 

 

I tried the 8k rom in my Krok many more times, but was unable to make it fail. I wish I had a real cartridge to try. I'm curious how the bankselect logic works for the IC now, whether it gets cleared at startup or not. This might vary from chip to chip too.

Well, I'm thinking it's because of what Kroko said, that the Krok cart will always startup in bank 0. From this POV, the KrokCart is also emulating the ROM behaviour; we'd need a real ROM cart to know for sure.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...