GEMS Jukebox
Moderator: Mask of Destiny
GEMS Jukebox
This ROM - just tool for testing GEMS banks.
Please test it on real hardware.
Nothing special, but some bugs can be revealed.
http://elektropage.ru/r57shell/Player.bin
Multiple music playing at once - not bug. This is particularity of driver.
For music test: play music in BGM, and SFX in SFX.
Only developer knows where is SFX and where BGM.
Please test it on real hardware.
Nothing special, but some bugs can be revealed.
http://elektropage.ru/r57shell/Player.bin
Multiple music playing at once - not bug. This is particularity of driver.
For music test: play music in BGM, and SFX in SFX.
Only developer knows where is SFX and where BGM.
-
- Very interested
- Posts: 2984
- Joined: Fri Aug 17, 2007 9:33 pm
Two things on real hardware: first, you need to put "SEGA" at 0x100 to pass TMSS. You don't need to have an entire header like SEGA specified, but not having "SEGA" at 0x100 means it won't run on TMSS models.
Second, it doesn't respond to the controller on real hardware. It may be something to do with your pad routines, or it may have something to do with your timing or int handling. On real hardware, you get the jukebox display, and it's stuck sitting on the BGM setting.
Second, it doesn't respond to the controller on real hardware. It may be something to do with your pad routines, or it may have something to do with your timing or int handling. On real hardware, you get the jukebox display, and it's stuck sitting on the BGM setting.
Ahhh. This is my mistake. Somehow removed it when edited :S.Chilly Willy wrote:first, you need to put "SEGA" at 0x100 to pass TMSS.
It may be just error occured somewhere, and all processes stucked. So, now VBLANK counter and UPDATE counter added. Both must grow up at every frame.Chilly Willy wrote:Second, it doesn't respond to the controller on real hardware.
First, I do init of joypads sending $40 to four ports, but then I read only two of them. Reading of joypad occurs in VBLANK. Is it correct?
Updated file on same link.
-
- Very interested
- Posts: 2984
- Joined: Fri Aug 17, 2007 9:33 pm
Neither updates on real hardware, but do in Gens/GS (what I use for testing on PC).r57shell wrote:It may be just error occured somewhere, and all processes stucked. So, now VBLANK counter and UPDATE counter added. Both must grow up at every frame.
If you are using sgdk, you shouldn't do anything with the ports yourself. All that is handled for you as shown in the example apps. In sgdk, the joypads are automatically enabled and read in the vblank. Things like mice and light guns need to be enabled using JOY_setSupport before they start being read in the vblank.First, I do init of joypads sending $40 to four ports, but then I read only two of them. Reading of joypad occurs in VBLANK. Is it correct?
Thanks for fast testing!
Removed reading z80 RAM, and updated rom on same link.
If it will not work, then I will cut off all parts of driver, and leave UI alone.( in the dark )
It explains many thingsChilly Willy wrote:Neither updates on real hardware
I don't use sgdk. Plain ASM only. Only hardcore :]Chilly Willy wrote:If you are using sgdk, you shouldn't do anything with the ports yourself
Removed reading z80 RAM, and updated rom on same link.
If it will not work, then I will cut off all parts of driver, and leave UI alone.( in the dark )
-
- Very interested
- Posts: 2984
- Joined: Fri Aug 17, 2007 9:33 pm
No problem... I know what a pain it is to have to try to work out bugs on real hardware when you don't have a way to try it yourself.r57shell wrote:Thanks for fast testing!
In that case, the pads are read when you read them. It's not an automatic thing. Most people make the pad reading the last thing they do in the vblank int routine. You don't NEED to do it there, but you should avoid reading the pad more than once per frame - many newer pads (6 button in particular) go spastic if you read them too often.I don't use sgdk. Plain ASM only. Only hardcore :]
Okay, the current version reads the pad, but doesn't update the screen at all. You can change the options and play sfx and bgm, but the screen doesn't change... unless you play music and wait - eventually the center of the screen fill with trash.Removed reading z80 RAM, and updated rom on same link.
If it will not work, then I will cut off all parts of driver, and leave UI alone.( in the dark )
EDIT: The level meters no longer update, even in emulation. You definitely screwed up something there.
Hehe, I knew where was problem .Chilly Willy wrote:EDIT: The level meters no longer update, even in emulation. You definitely screwed up something there.
Yes, as I told, I turned off reading z80 RAM (for meters and tempo).
Must work all except tempo update, and visualization.Chilly Willy wrote:Okay, the current version reads the pad, but doesn't update the screen at all.
So, next question is: how correctly read z80 RAM.
now code is:
Code: Select all
move.w sr,-(SP)
or.w #$0700,sr
hold z80 bus
read z80 RAM
release z80 bus
move.w (sp)+,sr
Updated again.
Thanks again.
Last edited by r57shell on Mon Jun 03, 2013 9:37 pm, edited 1 time in total.
-
- Very interested
- Posts: 2984
- Joined: Fri Aug 17, 2007 9:33 pm
Okay, the display updates on emulation, but still doesn't on real hardware. The center section still fills with garbage after several seconds (on real hardware). I'd guess maybe you're screwing up the VDP command in an interrupt or something.
Also, the SFX control plays music, not SFX. The DAC control plays a drum hit, so it's probably okay.
Also, the SFX control plays music, not SFX. The DAC control plays a drum hit, so it's probably okay.
Chilly Willy wrote:Also, the SFX control plays music, not SFX.
It is particularity of driver. So you need to assume, you can play music "as" sfx. For example: wind in loop, or another ambient.r57shell wrote:Only developer knows where is SFX and where BGM.
I think, I found bug. Updated again.
It's strange, that all of emulators worked with it: RetroArch, MESS, Gens Surreal, Gens rerecording 11b, Regen, Kega Fusion.
Exodus not tested, because I don't have good PC for that.
EDIT: now, last command of DMA from RAM: move.l (sp)+,($C00004)
I hope all will work now.
-
- Very interested
- Posts: 2984
- Joined: Fri Aug 17, 2007 9:33 pm
-
- Very interested
- Posts: 2984
- Joined: Fri Aug 17, 2007 9:33 pm
Maybe problem with someone else? example: RRRHack AFAIK works ok on flash cartridges without 'special' requirements for dma and other shit like bus captures into joysticks.r57shell wrote:Turned off z80 RAM read again. Modified move.l, to use move.w.
I see, that I don't understand DMA, particularly from RAM.
P.S. Hi
Попробуй tst.w (word_0_C00004).l добавь сразу после инита, во многих ромах есть.r57shell wrote:Main problem is that this ROM done almost from BLANK.
But when you do hacks: mostly all work with hardware already writed with developers of the game.
Кстати ещё можно добавить ожидание дма там же, что связано с тем что оно не останавливается после кнопки сброс и это может вызвать баги после сброса. в том же роме ррр есть, и порты там вначале не так. Там 6 штук - в три идет 0, в три $40.
Насчет хаков - дак было, но я выпилил чето там, а в новом коде и подавно нету, и ниче у шумахера работало всё даже с моуд1. только у сегамана висло на гофере, и то на 2-ой планете
English:
Try to add tst.w $C00004.l after init, it exist in most ROMS.
Also you may try to 'wait dma' after init, it's bugged dont stop if reset. Ports - in RRR it writes 00 to some 3 ports, and $40 to some 3 other.
About hacks - yes, but I cut off some things, and new code doesn't have it , but it still works on 3DShumacher cart, and afaik even mode1 works fine. Game freezes only Segaman's sega gopher and only sometimes on 2nd planet.
Last edited by Ti_ on Wed Jun 05, 2013 7:13 am, edited 1 time in total.