Uridium rom conversion

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

By Abobo

Resident (63)

Abobo's picture

18-02-2015, 13:53

Hi all, i'm tring to conver urdium rom for msx to bin,i used all classic software, but they don't woks! They don't recognise it as an msx rom! is it protected?

Login or register to post comments

By ericb59

Paragon (1046)

ericb59's picture

19-02-2015, 07:06

why do you want to transform it into .bin ?

By gdx

Enlighted (4695)

gdx's picture

19-02-2015, 08:35

A simple solution to launch roms without any patch on MSX HERE.
Urdium works.

By Abobo

Resident (63)

Abobo's picture

19-02-2015, 09:00

i want to create a cassette file! so i need to convert the .rom file, to binaries.

By giangiacomo.zaffini

Champion (267)

giangiacomo.zaffini's picture

19-02-2015, 09:13

Please let me know if You can succeed (and how to You get there) in Your project. I'm trying to doing the same thing with baa games.
It is easier with baa games because they are bin/dat files with bas loaders, no ROMs at all.

By hit9918

Prophet (2905)

hit9918's picture

19-02-2015, 14:53

@gdx, it would be nice to have a tape version Smile

I feel the ROMload topic is lots specialized tools, and slot/mapper topics make 90% of the code.
I would like to improve the whole slotmapped situation. One example:
the usual two pages of code with a nested loop to search slots, replace it by one call to incslt.
be it musical cartridge or scc or RAM search.

		;inc slotID to next slot/subslot
incslt:		call clslt : jr c,incsltexp
		inc a
		and 3				;subslot 0 if neighbour is expanded
		call clslt
		ret
		
incsltexp:	rrca
		rrca
		or 0x3C				;PP1111SS , a carry in SS overflows to PP
		inc a
		rlca
		rlca		
		call clslt
		ret
		
		;dec slotID to previous slot/subslot
decslt:		call clslt : jr c,decsltexp
		dec a
		or 0xC				;subslot 3 if neighbour is expanded
		call clslt
		ret
		
decsltexp:	rrca
		rrca
		and 0xC3			;PP0000SS , a carry (borrow) in SS overflows to PP
		dec a
		rlca
		rlca
		call clslt
		ret

		
		;clean slotID. calculate E bit and clean undefined bits
clslt:		call eslt
		jr c,clsltexp
		and 3
		ret
		
clsltexp:	and 15
		or 128
		scf
		ret
		

		;calculate E bit
eslt:		push hl
		ld h,a
		and 3
		add 0xc1		;exptbl lo
		ld l,a
		ld a,h
		ld h,0xfc		;exptbl hi
		bit 7,(hl)
		jr nz,esltexp
		and 127
		pop hl
		ret
		
esltexp:	or 128
		scf
		pop hl
		ret

And shh.... for the mapper-reading addict I got some legal drug Big smile

		mirfc equ 0xf2c7
		mirfd equ 0xf2c8
		mirfe equ 0xf2c9
		mirff equ 0xf2ca
enamapper0:	ld (mirfc),a		;first write RAM mirror. interrupt-capable secquence.
		out (0xfc),a
		ret
getmapper0:	ld a,(mirfc)
		ret
		
enamapper1:	ld (mirfd),a
		out (0xfd),a
		ret
getmapper1:	ld a,(mirfd)
		ret
		
enamapper2:	ld (mirfe),a
		out (0xfe),a
		ret
getmapper2:	ld a,(mirfe)
		ret

enamapper3:	ld (mirff),a
		out (0xff),a
		ret
getmapper3:	ld a,(mirff)
		ret

An app running not under DOS2 must initialize

		ld a,3
		call enamap0
		ld a,2
		call enamap1
		ld a,1
		call enamap2
		ld a,0
		call enamap3

That may crash. And then it can be an early warning of issues.
Like e.g. the code thought it was sitting at 0x8000 but it was at 0xc000 with scrambeled RAM when MSX1 bios didnt initialize the mapper.

if HIMEM > mirfc then move HIMEM below mirfc. in case it is a casette system Smile
one coding style for the entire MSX fleet, from MSX1 casette to TR Smile

Stunt: "push the mapper" Smile finest stuff for the mapper-reading addict Smile

function:	ld a,(mirfc)
		push af

Library code may need to push HL. Same way it may need to push the mapper.
But let us not forget to pop the mapper

		pop af
		call enamap0
		ret

So you call the library function, and afterwards the mapper is untouched.
Like a library call that keeps HL untouched.

"the mapper", with this coding style you can think of just one mapper. All the internal vs external mapper problem cloud disappears.
When you feel there still are multiple things... well there are multiple slots.
There is a 2D grid (subslot, mapper). Moving the mapper does slide all mapped RAM, no matter what subslot is selected.
I didn't make this up, the hardware goes like that.

The hardware to not have the mapper read issue would have been
that the MSX1 mainboard in day one had 4 mapper registers with full 8bit plus 8 additional address pins on the slots.
The coding with RAM mirror byte behaves as-if that is the case!
And it works on the most badass mappered expandered machine in the furthest subslot in interrupt!
Smile

By hit9918

Prophet (2905)

hit9918's picture

19-02-2015, 16:03

A problem is that the casette does not have files.
It has BLOAD and ASCII. ASCII has funny end-of-file markers that can't take binary files.

An easy way is to pack the file into a bload.
But when there are .DAT files with an algorithm while loading, one needs cpu time ability like ascii with the file split into chunks.
Would need to specify a new tape file format that is like ascii but can take binaries.
As one is into that, crank up the chunk size beyond 256 bytes, like 1k.
Was something like that already done somewhere?

By ARTRAG

Enlighted (6543)

ARTRAG's picture

19-02-2015, 23:26

Abobo, the best way is to buy a flash cart (e.g. by Eric or by Manuel Pazos)
- or an Uridium cart ;-)

By gdx

Enlighted (4695)

gdx's picture

20-02-2015, 01:00

It's regrettable that it has no flash card within € 50.

A flash cart with a Musical Memory Mapper allow to play SG1000 Roms, many Colecovision Roms and almost all MSX games on any MSX but it costs more than € 105.

By Grauw

Ascended (10066)

Grauw's picture

20-02-2015, 19:48

By gdx

Enlighted (4695)

gdx's picture

21-02-2015, 02:56

Oops, I confused with a Flash card interface. Currently it costs € 65 minimum. Crying

A flash cartridge is good for some Megaroms only. The advantage is that it is used as an original cartridge.

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