Golden Sun Hacking Community
April 27, 2017, 03:33:17 AM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News:
 
  Home   Forum   DC Wiki Help Search Calendar Downloads Login Register  
Pages: [1]   Go Down
  Print  
Author Topic: LSDJ RAM Dump stuff  (Read 10816 times)
0 Members and 1 Guest are viewing this topic.
Seto Kaiba
the blind-oriented developer
Jupiter Clan

Regular Member
*

Coins: 2
Offline Offline

Gender: Male
I am: owner of kaiba corp
Posts: 173

« on: June 30, 2015, 06:21:25 PM »

LSDJ is a tracker for the Gameboy that allows players to create their own chiptunes with it. I've done quite a bit of music with this nifty piece of software and I can say it's pretty dang awesome. Unfortunately, being a Gameboy game, it's completely inaccessible outside of memorization. So I may be writing a specific GB emulator that will allow blind musicians to explore this pretty awesome tool.

I may just make it so that you can write your own files and then just load it into VBA but whatever, I found these, so have fun.

Anyways, I'm dumping my findings here, so hopefully someone else finds it useful.

LSDJ Memory Values:

0xB290-0xB68F

On the SONG screen, these values include the values of the various Chains.

These values do NOT reflect the actual values on any other screen. This should only be referenced when SONG is the active screen.

Each 4 bytes indicates a row of Chains. For example, the first byte in a set of 4 is PU1, then PU2, then WAV, then NOISE. Then it repeats until reaching FF.

These values seem to be stored elsewhere when not on the SONG screen, but I can't find them.

Idea: Extract these values when SONG is first loaded and place them in an array for quick access while on this screen, and flush the array when the screen changes.

0xA080-0xA87F

On the CHAIN screen, these values include references to various phrases.

These values do not reflect the actual values on any other screen. This should only be references when CHAIN is the active screen.

Each 16 bytes reflects a single chain. Chain 00 starts at A080, chain 01 starts at A090 ect.

These values are stored elsewhere but I can't find them.

Idea: Extract these values when CHAIN is first loaded and place them in an array for quick access while on this screen, and flush the array when the screen changes. Only reference the CURRENTLY SELECTED CHAIN.

0xA880-0xB07F

On the CHAIN screen, these values are the pitch offset for each individual phrase.

Similar to the references to the phrases, each 16 bytes corresponds with each chain. So A880 is chain 00, A890 is chain 1 ect.

0xA000-0xAFEF

On the PHRASE screen, represents the various notes. C3 (the lowest note) is represented with 01 while the highest note, B8, is represented by 48.

This has a weird update format. When deleting a note, it completely erases all the notes. This also occurs if you insert the same note. Adding the same instrument clears the memory as well. The list is resorted when you change the current note.

Each 16 bytes represents a single phrase. A000 is Phrase 00, A010 is phrase 01, ect.

0xC0AD

Current screen. Values correspond to:

01 - PHRASE screen
02 - GROOVE screen
03 - CHAIN screen
04 - SONG screen
05 - TABLE screen
06 - INSTRUMENT Screen
08 - FRAME screen
09 - PROJECT screen
0A - BANK screen

I might be missing a few, it's always tricky to go and figure this one out. lol

0xC1EF

5 character string representing currently selected instrument's name. Only applicable on INSTRUMENT screen.

The following are values that monitor the cursor. They stay the same when switching screens unless otherwise specified.

0xC1CC

PHRASE screen:

Horizontal cursor position. Starts at 1. 1 is note, 2 is instrument, 3 is type of modulation and 4 is modulation modifier.

0xC1CD

PHRASE screen:

Vertical cursor position.

0xC1D2

CHAIN screen:

Horizontal cursor position. 0 is chain, 1 is transpose.

0xC1D3

CHAIN screen:

Vertical cursor position.

0xC1D7

SONG screen:

Horizontal cursor position.

0xC1D8

SONG screen:

Vertical cursor position.
« Last Edit: June 30, 2015, 07:23:15 PM by Seto Kaiba » Logged

View Profile WWW
Pages: [1]   Go Up
  Print  
 
Jump to:  

Cbox
Today at 12:17:52 AM
Fox: (e.g. The process of reomving, replacing, adding, and/or moving around current ability effects to other index numbers.... ETC.)
Today at 12:15:33 AM
Fox: Or an Ability Effect editor, even.... But I imagine most of those would involve have patches applied to help with compatibility, and what not.?
Today at 12:10:36 AM
Fox: Hm. Oh! Did Atrius's Editor contain code from the April Fools version? Might be cool to have that, I'm guessing? - And yes, tools... even specific feature tools... Like an Intellect Editor, maybe.... If it was practical. (Not saying doable, but practical.)
Yesterday at 11:58:08 PM
Lord Squirtle: And yeah, "far less user-friendly" as an argument relies on the current lack of tools that could make using that easier.
Yesterday at 11:57:26 PM
Lord Squirtle: Since the GS editor is actually slower than using a hex editor is when it comes to classes, especially if you are mostly copying or tweaking existing classes to make full lines for them.
Yesterday at 11:56:18 PM
Lord Squirtle: Well I mean, it's the kind of effect that could easily be applied to a number of abilities if one wants. Having to open up a hex editor to use it for each of those abilities would take some time, and wouldn't really be as worthwhile as it can be for classes.
Yesterday at 11:50:27 PM
Fox: Far less user-friendly? Hm? I would say it depends on the tools/and such... For example, still haven't gotten my Exporter project done....
Yesterday at 10:07:39 PM
Lord Squirtle: But what I was thinking of doing with the unused effects was figuring out which ones are still available and combining them; averaging out the differences between each one so they make up for the ones that are missing.
Yesterday at 10:05:36 PM
Lord Squirtle: I may consider moving the effects to the end of the effect list, since I moved the pointer table and added some empty space on the end. My main concern with that is that it would be far less user friendly.
Yesterday at 08:06:20 PM
Fox: Heh... Starting to make me want to add the Ability Editor to my own Editor now... So I can do that, and have chance values listed for each and every one. (So it is more specific than Atrius's editor.)
Yesterday at 08:03:06 PM
Fox: Well, 0-255.
Yesterday at 08:02:53 PM
Fox: The max probably being 255.
Yesterday at 08:00:09 PM
Fox: (@Editor modification: In which case, I would recommend adding support up to the maximum number for future purposes.... if at all reasonably possible.)
Yesterday at 07:53:50 PM
Fox: @Disabling them: It kinda would be a trade-off for those who want to use those effects that went unused.... ...  I have a suggestion, though... and it might be rather interesting. But have you thought about using one of the unused flags to like... switch out Effect lists? (So you can have your own if you don't want to modify the editor.) I imagine it is rather unnecessary, though. Since it is easy enough to extend the list with a quick editor modification.
Yesterday at 04:46:01 PM
Lord Squirtle: And elements too from the looks of things.
Yesterday at 04:44:05 PM
Lord Squirtle: Makes me wonder how much work it would take to add more djinn slots.
Yesterday at 04:30:45 PM
Lord Squirtle: Well, total - 1.
Yesterday at 04:30:13 PM
Lord Squirtle: Huh, neat. I think I found the part of the djinn battle menu code that decides how many djinn of each element exist.
Yesterday at 02:53:07 PM
Lord Squirtle: I should probably look into disabling the multiplier chance for those now that I think about it.
Yesterday at 02:52:17 PM
Lord Squirtle: I still am, but mainly because it doesn't look like there are any abilities that use those effects.

Affiliates
Temple of Kraden Golden Sunrise
Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!
Page created in 0.098 seconds with 22 queries.