GEMS Jukebox
Moderator: Mask of Destiny
Ok, .
Test again. http://elektropage.ru/r57shell/Player.bin
Offtopic: is there sample with SGDK using DMA from RAM to VRAM? Just wanna see disassembly ^^ to check last sending (access).
partic, cube_flat does not use DMA.
Test again. http://elektropage.ru/r57shell/Player.bin
Strange, but making hacks in pure assembly is much easy than make something work from blank.Stef wrote:This is why working with pure ASM is pretty hard, tons of possible bugs on real hardware you don't notice on emulator.
Offtopic: is there sample with SGDK using DMA from RAM to VRAM? Just wanna see disassembly ^^ to check last sending (access).
partic, cube_flat does not use DMA.
-
- Very interested
- Posts: 2984
- Joined: Fri Aug 17, 2007 9:33 pm
That one goes instantly to the exception screen. It's an Illegal Instruction exception ($04).
Seems like a stack issue (pulling too many regs off the stack, or forgetting and leaving regs on the stack).
EDIT: Okay, I checked $1A006 and it's a RTS. So... thinking about something I corrected some time back, I updated the menu on my Myth flash cart to the latest and the program works fine. There was a bug some time back that didn't load the extra bytes past the last full sector of a game... not normally an issue since most everyone pads their MD game to 128K or 64K or at least 1K... except for homebrew like this where you have 6 bytes more than an even sector, which just happens to contain code that is instantly used.
Anywho, the menu on the flash cart was old enough that it had that bug. Updating it to current loads the WHOLE program, which runs fine now that ALL the code is loaded. Sorry about that.
Code: Select all
D0=00000008 A0=00A10005
D1=0000FF00 A1=FFFFFF88
D2=0000FFFF A2=00000E6D
D3=00000000 A3=00000E5A
D4=00000000 A4=FFFFA000
D5=00000000 A5=00000000
D6=00000000 A6=00C00000
D7=00003354 SP=00FFDFF2
PC=0001A006 SR=2004
00FFDFF0=
DFF22004 0001A006 00000776 00000532
(rest of stack is 0)
EDIT: Okay, I checked $1A006 and it's a RTS. So... thinking about something I corrected some time back, I updated the menu on my Myth flash cart to the latest and the program works fine. There was a bug some time back that didn't load the extra bytes past the last full sector of a game... not normally an issue since most everyone pads their MD game to 128K or 64K or at least 1K... except for homebrew like this where you have 6 bytes more than an even sector, which just happens to contain code that is instantly used.
Anywho, the menu on the flash cart was old enough that it had that bug. Updating it to current loads the WHOLE program, which runs fine now that ALL the code is loaded. Sorry about that.
It seems like flashcart bug . Not full dump loaded.
I will add some FFFFF in the end.
http://elektropage.ru/r57shell/Player.bin
May be just last byte not readed. So this invalid instruction 4E FF or 4E 00. But in my ROM in the end 4E 75 = rts.
I will add some FFFFF in the end.
http://elektropage.ru/r57shell/Player.bin
May be just last byte not readed. So this invalid instruction 4E FF or 4E 00. But in my ROM in the end 4E 75 = rts.
Nothing to sorry about.
You have found bug in your soft :].
So, full speed ahead!
I will turn all things on.
http://elektropage.ru/r57shell/Player.bin
You have found bug in your soft :].
So, full speed ahead!
I will turn all things on.
http://elektropage.ru/r57shell/Player.bin
-
- Very interested
- Posts: 2984
- Joined: Fri Aug 17, 2007 9:33 pm
I'm glad. If you know what I mean
Now, I want ask to test.
1) I will wrap DMA again in gemsdmastart gemsdmaend, as it should be. It needs to prevent suspending of z80.
2) I want to try get deadlock. I thought that there was deadlock, but it can be just bug with flash card.
1) http://elektropage.ru/r57shell/Player.bin
2) http://elektropage.ru/r57shell/Player_first.bin - just first version with last DMA access corrected, and padded size.
Now, I want ask to test.
1) I will wrap DMA again in gemsdmastart gemsdmaend, as it should be. It needs to prevent suspending of z80.
2) I want to try get deadlock. I thought that there was deadlock, but it can be just bug with flash card.
1) http://elektropage.ru/r57shell/Player.bin
2) http://elektropage.ru/r57shell/Player_first.bin - just first version with last DMA access corrected, and padded size.
-
- Very interested
- Posts: 2984
- Joined: Fri Aug 17, 2007 9:33 pm
Those both seem to work. But while music playing, DAC may or may not sound. Probably due to music using DAC itself. If I play #4, DAC plays fine. I don't think there's any perc in Moonlight Sonata.r57shell wrote:I'm glad. If you know what I mean
Now, I want ask to test.
1) I will wrap DMA again in gemsdmastart gemsdmaend, as it should be. It needs to prevent suspending of z80.
2) I want to try get deadlock. I thought that there was deadlock, but it can be just bug with flash card.
1) http://elektropage.ru/r57shell/Player.bin
2) http://elektropage.ru/r57shell/Player_first.bin - just first version with last DMA access corrected, and padded size.
Oh god! It means, that all tests that we done - just for removing DMA bug and flash card bug.Chilly Willy wrote:Those both seem to work.
By default, priority of channel 15 is lowest. I use 15 channel for playing DAC.Chilly Willy wrote:But while music playing, DAC may or may not sound.
So, any another PCM will prevent DAC from playing. Use SFX control for playing SFX, or play drums in VOID.
You can mute any channel by pressing A. :]
Ok, all tests is done. At lasT!)
Great job. Thank you very much. Now I know that my Jukebox will work on real hardware. I will remove almost all files, so links will broken.
Next time: instrument editor right in player :S.
-
- Very interested
- Posts: 2984
- Joined: Fri Aug 17, 2007 9:33 pm
Well, we learned a lot, you cleaned up your code, and added a nice exception debug screen.r57shell wrote:Oh god! It means, that all tests that we done - just for removing DMA bug and flash card bug.
I imagine it will allow loading and saving instruments?Ok, all tests is done. At lasT!)
Great job. Thank you very much. Now I know that my Jukebox will work on real hardware. I will remove almost all files, so links will broken.
Next time: instrument editor right in player :S.
This screen already removed. I don't want to include this thing.Chilly Willy wrote:Well, we learned a lot, you cleaned up your code, and added a nice exception debug screen.
Loading - yes, but saving - how? It will support only notepad with pen :S.Chilly Willy wrote:I imagine it will allow loading and saving instruments?
I can make support of saving into SRAM, but I don't realy know is it useful.
-
- Very interested
- Posts: 2984
- Joined: Fri Aug 17, 2007 9:33 pm
Until you run into the next untraceable crash.r57shell wrote:This screen already removed. I don't want to include this thing.Chilly Willy wrote:Well, we learned a lot, you cleaned up your code, and added a nice exception debug screen.
Flash carts with SD card support have the ability to save sram to an SD file, so that could be useful. I guess it's not something you NEED, but every feature makes it a bit better.Loading - yes, but saving - how? It will support only notepad with pen :S.Chilly Willy wrote:I imagine it will allow loading and saving instruments?
I can make support of saving into SRAM, but I don't realy know is it useful.
Here's my compilation for r57shell's player:
Tracklist: Vectorman 1, Earthworm Jim 2, Doom Troopers, Comix Zone, Dune2.
gems_compilation_wip.rar
Some bugs of GEMS_Player.bin:
Some wrong in rom header, code starts from (0x1F4 instead of 0x200).
When you play combined song (example: DT: Nero) , and if start a new song with A button, it not stops.
Not sure I have latest builder.
Tracklist: Vectorman 1, Earthworm Jim 2, Doom Troopers, Comix Zone, Dune2.
gems_compilation_wip.rar
Some bugs of GEMS_Player.bin:
Some wrong in rom header, code starts from (0x1F4 instead of 0x200).
When you play combined song (example: DT: Nero) , and if start a new song with A button, it not stops.
Not sure I have latest builder.