"Weird ROMs" launching

Page 1/14
| 2 | 3 | 4 | 5 | 6

By Louthrax

Prophet (2093)

Louthrax's picture

11-01-2016, 12:28

Hi all,

I was doing some tests this week-end with strange small ROMs (BASIC ROMs or ROMs starting below 4000h). Below is a list of those ROMs, sorted by starting address and followed by first 16 bytes dump, file size & name.

I was wondering what would be the best way to launch these ? Let me know if you have some experience on that.

0000  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    32768 .\MSX\ROM.ZIP\Burger Time (1986)(Dempa)(JP).rom
0000  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    32768 .\MSX\ROM.ZIP\Demon Crystal, The (1986)(Dempa)(JP).rom
0000  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   131072 .\MSX\ROM.ZIP\Kanji Rom - JIS 1st Class (For Jap. MSX-Write)(Ascii)(JP).rom
0000  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   262144 .\MSX2\ROM.ZIP\Kanji ROM - JIS 1st+2nd Class (For MSX-Write II)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00    32768 .\MSX\ROM.ZIP\Courageous Perseus (1985)(Cosmos)(JP).rom
0000  41 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00    32768 .\MSX\ROM.ZIP\MSX Bunsetsu Henkan Jisyo (FS-SR022)(1985)(National)(JP).rom
0000  41 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00    32768 .\MSX\ROM.ZIP\MSX Shogi Game (1984)(Sony)(JP).rom
0000  41 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00    65536 .\MSX\ROM.ZIP\Harryfox Yki no Maoh (1985)(Micro Cabin)(JP).rom
0000  41 42 00 00 00 00 00 00 00 00 00 00 00 00 c6 72    32768 .\MSX\ROM.ZIP\Trump Aid (1986)(Toshiba Emi)(JP).rom
0000  41 42 00 00 00 00 00 00 10 80 00 00 00 00 00 00     8192 .\MSX\ROM.ZIP\Pair Logic (2005)(AGsoftware).rom
0000  41 42 00 00 00 00 00 00 10 80 00 00 00 00 00 00     8192 .\MSX\ROM.ZIP\Snoopy Town (2005)(AGsoftware).rom
0000  41 42 00 00 00 00 00 00 10 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\3D Golf Simulation - High-speed (1984)(T&E Soft)(JP).rom
0000  41 42 00 00 00 00 00 00 10 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\3D Golf Simulation - Normal (1983)(T&E Soft)(JP).rom
0000  41 42 00 00 00 00 00 00 10 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Blusy Shop (2005)(MSXnake).rom
0000  41 42 00 00 00 00 00 00 10 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Bomb Man (2005)(AGsoftware).rom
0000  41 42 00 00 00 00 00 00 10 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Lode Run (2005)(AGsoftware).rom
0000  41 42 00 00 00 00 00 00 10 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Music Harmonizer 3 (1983)(Rittor Music Inc.)(JP).rom
0000  41 42 00 00 00 00 00 00 10 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Pasokon Sakkyokuka (1983)(Rittor Music Inc.)(JP).rom
0000  41 42 00 00 00 00 00 00 10 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Viking (2005)(Jose Luis Tur)(ES).rom
0000  41 42 00 00 00 00 00 00 10 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Viking (2005)(Jose Luis Tur).rom
0000  41 42 00 00 00 00 00 00 10 80 00 00 00 00 00 00   131072 .\MSX2\ROM.ZIP\Super Lode Runner (1987)(Irem)(JP).rom
0000  41 42 00 00 00 00 00 00 10 90 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Nausicaa (1984)(Tecnopolis Soft)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\3D Tennis (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Brain, The (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Break Out (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Comet Tail (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Crazy Bullet (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Danger X4 (1984)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Exchanger (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Gang Master (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Golf Game (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Iriegas (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Ladder Building (1984)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Lord Over (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Marine Battle (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Mole (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Moon Landing (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\MSX Derby (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\MSX21 (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Pairs (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Pass Ball (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Rotors (1984)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Scope On (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Star Command (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Trial Ski (1984)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 12 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Warrior (1983)(Ascii)(JP).rom
0000  41 42 00 00 00 00 00 00 1d 80 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Renju & Ojama Dogs (1985)(Pony Cannon)(JP).rom
0000  41 42 00 00 10 40 00 00 00 00 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\MSX Basic-Kun (1986)(Ascii)(JP).rom
0000  41 42 00 00 10 40 00 00 00 00 00 00 00 00 00 00    32768 .\MSX\ROM.ZIP\Space Crussader (2005)(Yermani Soft)(ES).rom
0000  41 42 00 00 10 40 00 00 00 00 00 00 00 00 00 00    32768 .\MSX\ROM.ZIP\Space Crussader (2005)(Yermani Soft).rom
0000  41 42 00 00 10 80 00 00 00 be 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Karamaru (1984)(Hal)(JP).rom
0000  41 42 00 00 10 80 00 00 4a 95 00 00 00 00 00 00     8192 .\MSX\ROM.ZIP\Super Billiards (1984)(Hal)(JP).rom
0000  41 42 00 00 13 40 00 00 00 00 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Simple ASM 1.0 (1984)(Coral)(JP).rom
0000  41 42 00 00 32 40 00 00 00 00 00 00 00 00 00 00    16384 .\MSX2\ROM.ZIP\MSX Basic-Kun Plus (1988)(Ascii)(JP).rom
0000  41 42 00 00 3a 40 00 00 00 00 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\MSX AID (1987)(Ascii)(JP).rom
0000  41 42 00 00 82 40 00 00 00 00 00 00 00 00 00 00    65536 .\MSX\ROM.ZIP\FM Pana Amusement Cartridge (FM-PAC)(1988)(Panasoft)(JP).rom
0004  41 42 04 00 c3 88 01 e5 2a 00 e0 e3 c9 f5 e5 21    16384 .\MSX\ROM.ZIP\Beamrider (1984)(Pony Canyon)(JP).rom
0004  c3 a2 04 00 00 00 00 00 c3 f5 03 00 c3 18 02 00   131072 .\MSX\ROM.ZIP\MSX Audio (FS-CA1)(1988)(Panasonic)(JP).rom
0010  41 42 10 00 00 00 00 00 00 00 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\River Raid (1984)(Pony Canyon)(JP).rom
0010  41 42 10 00 00 00 00 00 00 00 00 00 00 00 00 00    32768 .\MSX\ROM.ZIP\Keystone Kapers (1984)(Pony Cannon)(JP).rom
003b  41 42 3b 00 18 35 00 00 3a f6 e2 c9 00 00 00 00    16384 .\MSX\ROM.ZIP\Decathlon (1984)(Pony Canyon)(JP).rom
0041  41 42 41 00 00 00 00 00 00 00 00 00 00 00 00 00    32768 .\MSX\ROM.ZIP\Hero (1984)(Pony Cannon)(JP).rom
0079  41 42 79 00 00 00 00 00 00 00 00 00 00 00 00 00    16384 .\MSX\ROM.ZIP\Athletic Land (1984)(Konami)(beta).rom
00cf  41 42 cf 00 00 00 00 00 00 00 00 00 00 00 00 00     8192 .\MSX\ROM.ZIP\Sparkie (1983)(Sony)(JP).rom
0160  41 42 60 01 00 00 00 00 00 00 00 00 00 00 00 00     8192 .\MSX\ROM.ZIP\Crazy Train (1983)(Sony)(JP).rom
0160  41 42 60 01 00 00 00 00 00 00 00 00 00 00 00 00     8192 .\MSX\ROM.ZIP\Crazy Train (1983)(Sony)(JP)[a].rom
030d  41 42 0d 03 00 00 00 00 00 00 00 00 00 00 00 00     8192 .\MSX\ROM.ZIP\Juno First (1983)(Sony)(JP).rom
06c7  41 42 c7 06 c3 c2 cd 38 30 78 a9 e2 8d 18 03 a9    32768 .\MSX\ROM.ZIP\Zenji (1984)(Pony Cannon)(JP).rom
1102  21 39 02 11 39 01 01 c7 be ed b0 f3 3e c9 32 38    49152 .\MSX\ROM.ZIP\Universe - Unknown v2 (2005)(Infinite).rom
1103  21 00 03 11 00 02 01 00 be ed b0 f3 3e c9 32 38    49152 .\MSX\ROM.ZIP\Universe - Unknown (2005)(Infinite).rom
3a42  cd 66 42 3a 06 d7 3c 32 06 d7 fe 05 da fe 40 af    32768 .\MSX\ROM.ZIP\Lot Lot (1986)(Irem)(JP).rom
Login or register to post comments

By gdx

Prophet (3085)

gdx's picture

11-01-2016, 13:44

The header of Burger Time, Lot Lot, The Demon Crystal and Universe is probably at ofset 004000h in file. (a ROM of 32 KB can have two headers!)

The roms with the header "0000 41 42 00 00 00 00 00 00 10 80 00 00 00 00 00 00" are roms containing a basic program. This roms are placed on the bank 8000h~BFFFh.

Athletic Land beta, Beamrider, Crazy Train, Decathlon, Juno First, Keystone Kapers, River Raid, Sparkie, Hero and Zenji are placed on the bank 0000h~3FFFh or bank 0000h~7FFFh if 32Kb.

Lastly, be aware that the banks of 16 KB have often mirrors. The ROM 8KB are also a mirror in same bank of 16KB. Megaroms (and DIY MegaflashRom) have also mirrors in banks 0000h~3FFFh and c000h~FFFFh. It can help you for some Roms.

By Grauw

Ascended (8515)

Grauw's picture

11-01-2016, 13:52

32K ROMs sometimes have their two 16K parts swapped. This is because if they are dumped on the MSX they are read as contiguous data from 4000H-BFFFH, however in hardware the ROM's address line A14 is 0 in the 8000H-BFFFH range and 1 in the 4000H-7FFFH range. So if it is dumped straight from the ROM chip, it will have the two 16K blocks swapped because the chip's first 16K is visible at 8000H and the second 16K is visible at 4000H.

There's no standard for ROM dumps that they have to be one way or another, so you have to figure out which order it is by yourself. It can be detected by detecting AB at both 0H and 4000H and then looking at the entry address, whether it is in the 4000H or 8000H range.

By gdx

Prophet (3085)

gdx's picture

11-01-2016, 14:12

Grauw wrote:

32K ROMs sometimes have their two 16K parts swapped. This is because if they are dumped on the MSX they are read as contiguous data from 4000H-BFFFH, however in hardware the ROM's address line A14 is 0 in the 8000H-BFFFH range and 1 in the 4000H-7FFFH range. So if it is dumped straight from the ROM chip, it will have the two 16K blocks swapped because the chip's first 16K is visible at 8000H and the second 16K is visible at 4000H.

Normally, the two 16K parts are replaced in the correct order in Rom image file, and it's the case for Burger Time, Lot Lot, The Demon Crystal and Universe - Unknown.

Burger Time is a Basic program with routines in machine language

By Guillian

Prophet (3233)

Guillian's picture

11-01-2016, 14:23

A ROM file does not contain enough information to exactly know how it works (i.e.: where it is located)
Depending on how the ROM is connected to slot signals, it will be mirrored, located at page 1, at page 2, etc.
So to be 100% sure how to emulate/load a ROM you must know how /CSx, /SLTSL, /Ax, etc. are connected (and hardware in the cartridge, of course).
In most cases you can try to guess where to locate the ROM.

BIOS searchs for ROMs only at pages 1 and 2. If it finds a ROM header with a valid (non 0) start address, it makes a interslot call to that address.
ROMs that start with 00 00 ... are probably located at address #0000 and are bigger than 16K, so they have the ROM header at #4000. But they could also be located at #4000 with the header at #8000.

I would check the ROM size, then the first bytes searching for a valid ROM header. Depending on the result, I would search for the header at offset #4000 and/or #8000.
You must to figure out how the ROM must be loaded and launched, or create a database with that information.

By gdx

Prophet (3085)

gdx's picture

11-01-2016, 14:44

Guillian wrote:

A ROM file does not contain enough information to exactly know how it works (i.e.: where it is located)
Depending on how the ROM is connected to slot signals, it will be mirrored, located at page 1, at page 2, etc.

A ROM file contains enough information if it is not mapped. The problem is that we must juggle slots, add mirrors and find a good method of execution. 100% is not possible on all media (RAM, MegaRam, Megaflash,...).

Guillian wrote:

BIOS searchs for ROMs only at pages 1 and 2

No, the BIOS searchs in all banks of all slots.

By Louthrax

Prophet (2093)

Louthrax's picture

11-01-2016, 14:42

Thank you guys, that will already help me a lot to improve things. The 0000h-4000h "normal" ROMs like Athletic Land beta, Beamrider... were working OK with the new SofaRun but I was a bit clueless about other ones (was a bit stupid assuming the "AB" header was always at the start of the file !).

Just a last question: how to launch the BASIC ROMs? Is there an entry point in BIOS that would do it?

By Ramones

Champion (264)

Ramones's picture

11-01-2016, 15:03

Hi Louthrax!

Have you tried launch with ODO? (ODO loads HERO and other #0000 addressed ROMS, like Crazy Train and works with some BASIC ROMs)

ODO rom loader

By Guillian

Prophet (3233)

Guillian's picture

11-01-2016, 15:14

gdx wrote:

A ROM file contains enough information if it is not mapped. The problem is that we must juggle slots, add mirrors and find a good method of execution. 100% is not possible on all media (RAM, MegaRam, Megaflash,...).

That is wrong. You can't know 100% sure where the ROM is located.

gdx wrote:

No, the BIOS searchs in all banks of all slots.

That's wrong also. BIOS only checks page 1 and 2.

By Louthrax

Prophet (2093)

Louthrax's picture

11-01-2016, 15:58

Ramones wrote:

Hi Louthrax!
Have you tried launch with ODO? (ODO loads HERO and other #0000 addressed ROMS, like Crazy Train and works with some BASIC ROMs)
ODO rom loader

Thanks for the link. I'm more searching for sources (in order to improve the SofaRun loader), but maybe I can find something by disassbemling ODO.COM (file is not so big).

By Guillian

Prophet (3233)

Guillian's picture

11-01-2016, 16:04

Louthrax wrote:

Just a last question: how to launch the BASIC ROMs? Is there an entry point in BIOS that would do it?

Check BIOS/BASIC at #7DF6.

From disassembled code by Arjen Zeilemaker

;	Subroutine	start basic program in extension ROM
;	Inputs		________________________
;	Outputs		________________________

J7DF6:	CALL	C7E2A			; translate SLTATR loopvar to address and slotid
	CALL	ENASLT			; enable slot on page 2
	LD	HL,(VARTAB)
	LD	DE,0C000H
	RST	DCOMPR
	JR	NC,J7E09		; VARTAB is already in page 3, leave it alone
	EX	DE,HL
	LD	(VARTAB),HL		; VARTAB = 0C000H (otherwise VARTAB would point into ROM)
J7E09:	LD	HL,(08000H+8)
	INC	HL
	LD	(TXTTAB),HL		; start of basiccode
	LD	A,H
	LD	(BASROM),A		; flag execution of basic program in ROM (cannot be aborted)

; Entrypoint used by diskrom to start extension ROM with basic program

C7E14:	CALL	C629A			; initialize interpreter, basic pointer at start of program
	JP	C4601			; execute new statement
Page 1/14
| 2 | 3 | 4 | 5 | 6