Hi
In the good old days I had both MSX and SVI-328 and I love them both especially that they are so close to each other beside having the same hardware components.
As you know that some MSX games have been successfully ported to SVI-3x8. Recently, I got the urge of porting SVI-3x8 games or at least some of them to MSX like SPECTRON and Armored Assault and others. As I wanted to start my own project I faced some big obstacles. I don't have a table of MSX I/O ports and their equivelent in SVI-3x8 such as video and audio and others! So I tried to do an utopsy on a famous MSX games which already been ported to SVI-3x8 in order to compare the differences and try to fill my own I/O ports table.
I began with an SVI-3x8 cassette tape containing the famous Konami "The Goonies". So here are my findings:
Utopsy main hardware: My Android mobile phone
Utopsy software: Hex Editor v.2.5.8 by First Row (thanks for such a useful free tool)
File is in TOSEC: Spectravideo SVI-318 & SVI-328 - Various - [CAS] (TOSEC-v2014-05-29_CM).zip
Filename: Goonies, The (1986)(Konami)[h Lord Wezzex][CLOAD + RUN].cas
File Length: 52 Kb = 53,248 Bytes
MSX Goonies.rom Length: 32 Kb = 32,768 Bytes
After doing a few byte searching for starting bytes of the real MSX "Goonies.rom" game I found it starting at 42F8H of the SVI-328 cas file! (what the hell all of the starting 16.74 Kb (17,144 Bytes) is for anyway?!
And the final byte of the MSX goonies.rom file is at C3B2H of the SVI-328 cas file, so I
1- Opened the SVI-328 cas file in the Hex Editor
2- Deleted bytes from C3B3H to the end of the file which is here CFFFH then saved the changes and closed the file
3- cas filesize have decreased from (52 Kb = 53,248 Bytes) to (48.92 Kb = 50,099 Bytes)
4- Reopened the file and deleted bytes from the start of file to 42F7H then saved the changes and closed the file
5- cas filesize have decreased from (48.92 Kb = 50,099 Bytes) to (32.18 Kb = 32,955 Bytes)
6- Reopened the file and deleted bytes from 4000H -apparently the start of the 2nd BIN file in the SVI-328 cas file- to 40BAH then saved the changes and closed the file
7- Now cas filesize have decreased from (32.18 Kb = 32,955 Bytes) to be exactly (32 Kb = 32,768 Bytes) same as goonies.rom file
8- Rename the SVI-328 cas file extension from cas to rom
9- I tried to load the new ROM file in openMSX SVI-3x8 machine but it doesn't work (I don't know how the SVI-328 run normal ROMs but out of hitting the wall feelings and out of pure curiousity I changed the machine to an MSX and loaded the new ROM with "guess rom type" option and it amazingly worked!
I thought that the rom have lots of bytes changed because it was meant to be run in the SVI-3x8. For example:
CD046F CALL BREAKX <- MSX CTRL+STOP check
expected to be:
CD3512 CALL BREAKX <- SVI-3x8 CTRL+STOP check
and:
CD4F08 CALL CHGMOD <- MSX CHGMOD= Change VDP mode
It should be:
CDD937 CALL CHGMOD <- SVI-3x8 CHGMOD= Change VDP mode
and so on but since the ROM is running on MSX without any changes so how can it be runing on SVI-3x8 without any modification?! My only guess is that the answer might be in the 20480 bytes of machine code I deleted earlier from the SVI-3x8 cas file. Anyway it is quite huge to be just a simple BIN loader and RAM mapper for the game. It might contain a table coordinator of MSX to SVI-3x8 ports numbers & BIOS equivelent routines addresses.
So, what do you think?!
Thanks in advance for sharing your experties and/or answers and for helping me understand.
BTW, another crazy idea I wonna try. I'll devide another 32 Kb MSX ROM into 2 equal BIN files (using the Hex Editor), then I'll just add the things I deleted and then convert the resulting 52 Kb file to a wave file, then I'll try running it in SVI-3x8 machine (without the Goonies cheats of course) and I'll see if it would run.