This is very simple: ROM games can't ever expect disk system to be present. If they need disk routines, they need to exit and init them self later though hooks when disk system has been initialized. (like ie. Konami Game Master does)
Of course, I agree. For this reason ODO can't initialise the stack. It is the responsibility of the game...
For sure it could just as well as the cartridge it self... and it even does if you hold CTRL... I still would point my finger to end user or ODO's insufficient documentation instead of the game it self. If the game works from real ROM, I consider it good.
I still would point my finger to end user or ODO's insufficient documentation instead of the game it self.
Ok, you win. ODO is guilty.
From ODO README.TXT:
---------------------------------------------------------------
[] RESTRICTIONS
ODO uses RAM to load and execute ROM files. These files could have problems if the MSX used does not have 64K in the same slot/subslot since they were not programmed to work from RAM.
Other problems can arise when executing the program. This can happen because the ROM boot system is always simulated and it is not exactly the same as the one which is used when MSX boots with the cart inserted.
Use CTRL option if your Rom don't work fine.
Ok, you win. ODO is guilty.
Oh, no it is not. As we can now see, it was actually explained very well... Now I blame end user
If the developer releases the game in cartridge only, there wouldn't be problem at all... but as far as a digital version is released, you can expect many people trying to play it from RAM, so I'd initialize the stack in the game just to be safe.
If the developer releases the game in cartridge only, there wouldn't be problem at all...
Nope. You should initialise the stack. MSX2 G900P has the DiskRom in 0-1 slot...(And this isn't a ODO problem) Then the DOS is initialised before your cartridge. So... you must initialise the stack.
Sorry for not replying here earlier. Ok, so, if it's safer to initialize the stack. Then I'd like to do that in the game. But I'm unsure how to do that. Does anyone have any pointers or examples on where I can learn how to do it?
We are finalizing the physical edition, and if this is an easy addition, then I'd like to have it in before we release it
Sorry for not replying here earlier. Ok, so, if it's safer to initialize the stack. Then I'd like to do that in the game. But I'm unsure how to do that. Does anyone have any pointers or examples on where I can learn how to do it?
We are finalizing the physical edition, and if this is an easy addition, then I'd like to have it in before we release it
It does not seem to be necessary with the Cartridge version anyway....
@santiontanon: I start my games just like this:
; *** Header *** org 04000h db 041h,042h dw init_main ds 12 ; *** Init Main *** init_main: di im 1 ld sp,0F380h ;Init stack ...
@ericb59: as Ramones said, it wouldn't work in MSX2 G900P computer
We are finalizing the physical edition, and if this is an easy addition, then I'd like to have it in before we release it
Try the Imanok's initialisation. Just one more thing, about G900P. Disable interrupt hooks before enable interrupts or call BIOS entries. Otherwise your game, surely, hangs. In short:
[ header ] DI IM 1 LD SP,#F380 LD A,#C9 LD (#FD9F),A LD (#FD9A),A [your awesome code can call now to bios entries, safely]
Reading all these "little" things that need to be addressed for a release with maximum compatibility, such as setting the stack top manually, makes me hope there is a "checklist" of these somewhere for newcomers?