Golden Sun Hacking Community
August 24, 2019, 03:56:20 PM *
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 17812 times)
0 Members and 1 Guest are viewing this topic.
roger
a programmer that likes supertramp
Jupiter Clan

Regular Member
*

Coins: 0
Offline Offline

I am: chillin'
Posts: 185

« 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
August 22, 2019, 12:53:38 PM
Omx7: A shame that I only recently discovered this website. Hopefully, we see Golden Sun 4 in the near future.
August 15, 2019, 04:08:47 PM
Fox: Golden Sun Slacking Community = I like that, Misery! Perfect April Fools joke?
August 13, 2019, 02:37:11 AM
Salanewt: Oh hey Atrius, long time no see!
August 12, 2019, 11:37:45 PM
Fox: (Someone else discovered that, not me.)
August 12, 2019, 11:33:42 PM
Fox: So um. It looks like abilties in the class editor are being put back in as a byte for GS1?
August 12, 2019, 08:02:58 PM
Fox: Also, it seems most of us have moved to the Discord. In case if you were wondering where the forums activity went. Maybe come by and check it out. But it is just a suggestion, you don't have to.
August 12, 2019, 07:57:02 PM
Fox: I figured that was a possibility. If you are guesting, it is hard to know how frequently you check back. It's great to hear from you, though. :)   What have you been up to?  Is Forgotten Dreams still being worked on, or has that been cancelled? (I'd guess you don't have much time for it. It's been years since we've last heard about it.)
August 12, 2019, 12:48:12 AM
KingAmiti: Still great work Atrius :)
August 11, 2019, 06:45:03 PM
Atrius: This place was a HUGE part of my life, and even though I don't have the time that it really deserves to take care of it, I will love it forever, and never forget about it..
August 11, 2019, 05:16:34 PM
Atrius: If anyone wants to make a replacement site then go for it.  Although I plan to keep this place up for the foreseeable future, it isn't really maintained anymore.
August 11, 2019, 05:09:10 PM
Atrius: Sometimes he comes by and looks around without logging in.
August 08, 2019, 11:52:33 AM
Fox: Does Atrius still come here? He hasn't logged in since last year. Maybe it is time to create a replacement site so we can have our full encyclopedia... Then again, I'm too lazy. Especially to get all that done by myself. :/
July 06, 2019, 03:44:41 AM
Salanewt: Oh, yeah there isn't an animation overhaul for GS1 sadly.
July 03, 2019, 04:54:58 PM
ryancaesar12345: GS2 Animation Overhaul w/ Baseline  ips patch in golden sun 1?
July 03, 2019, 12:03:06 AM
Salanewt: There actually is a Jupiter revive... if you're using the Animation Overhaul patch. I think Caledor made a standalone patch for GS1 too, but you'd have to ask him.
July 02, 2019, 07:34:13 AM
Fox: So like... (just a thought)...  If we designed a script to compare times for speedrunning something... goalChance represents stability (I think?) ; If it is 100%, answer results in infinite, which means you can't have 100% stability. (Meaning you'd basically be skipping all item drops/etc.) 
July 02, 2019, 07:06:08 AM
Fox: (I still want to make sure the equation is correct, though... as it did include some guessing.)
July 02, 2019, 07:04:47 AM
Fox: Was thinking .... tosses = ln(1-goalChance) / ln(1-chance) = "chance" being a single-toss percentage probability (0.00 - 1.00) , goal chance being if you did more tosses...   So that's an interesting logarithm.  Just came up with it after some research/thinking... and could maybe be useful for general use.
June 25, 2019, 02:51:42 PM
ryancaesar12345: jupiter revive animation any?
June 24, 2019, 08:05:17 AM
Fox: Such a patch would mean you need to be careful with item drops, coins, exp, etc. Because those things would then no longer be an infinite supply.  Whether or not one uses it depends on what they want to do with it.

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.084 seconds with 23 queries.