Golden Sun Hacking Community
September 21, 2017, 05:44:23 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 13454 times)
0 Members and 1 Guest are viewing this topic.
roger
the blind-oriented developer
Jupiter Clan

Regular Member
*

Coins: 3
Offline Offline

Gender: Male
I am: chillin'
Posts: 180

« 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
Yesterday at 12:08:05 AM
Atrius: Thanks for letting me know, it should be fixed now.
September 19, 2017, 11:47:02 PM
Fox: Okay cool.  Speaking about broken things = There was some error I've known about for awhile now:  When you try to upload something to the Downloads section. The user may think the upload failed, but it actually succeeds. - I wonder if that was one of the few things? And whether that could be fixed if it hasn't yet.
September 19, 2017, 11:42:01 PM
Atrius: Oops, that wasn't even supposed to go up.  So, our hosting company moved the site over to a different server, and I was just updating some settings to fix things that broke in the move.
September 19, 2017, 11:39:18 PM
Fox: @Atrius: Probably going to need to update the Maintenance Description... I was confused at first, but it says 20 Mar 2017.
September 19, 2017, 07:29:35 AM
dawnbomb: can someone link me the discord
September 19, 2017, 04:52:32 AM
Majora: That's hilarious, lmao. I thought it read like something you might have written, Fox, was almost unsure if it was a bot at first
September 18, 2017, 03:01:57 PM
Fox: Yeah, he copied this post: http://forum.goldensunhacking.net/index.php?topic=1425.0
September 18, 2017, 02:57:48 PM
Fox: (Although, not sure about the last part, it just feels strangely familiar for some reason.)
September 18, 2017, 02:56:43 PM
Fox: BOT ALERT! Kill it, kill it! I think it copied one of my posts? :P
September 17, 2017, 12:58:02 AM
Fox: Not saing we actually need those ofcourse (we don't?), but more saying that minorities could get too attached to them.
September 17, 2017, 12:54:47 AM
Fox: I think it's interesting how Facebook likes to start things, and then retire them. For example, Advanced Search, and E-mail. - They seemed like pretty fine features in my opinion, but retiring them because most people aren't using them at that time? I'm not sure if they know what they're doing, but it sound like they don't. :P
September 14, 2017, 12:59:16 PM
Fox: (At leat when I think about establishments...)  ; Oops, pardon my rudeness... .I forgot to welcome you back.... Well... WElcome back! We are glad you've returned.
September 14, 2017, 12:52:57 PM
Fox: (Just want to clarify that "founded" may be an actual word, but sounds weird the way it was used.)
September 14, 2017, 12:47:42 PM
Fox: Cringy? Let me check... Hm... Low number of posts [check] (5 posts) ; misspellings/grammar [check] ("Toturial" (Torture-ial?) , ; founded, ehh.... double past-tense?) ; The best part is at least the posts have a positive attitude! (That may be the most important part?) :)
September 14, 2017, 05:59:01 AM
KeinoGSTLA: back then my posts were so cringy lmao
September 14, 2017, 05:58:39 AM
KeinoGSTLA: damn feels good to find this place again
September 10, 2017, 04:27:04 PM
Fox: I don't suppose there is anything else? ;; Hmmm... What if a Big Brother game was similar to ... er.... Exit/Corners .... which seems to have a Trust system. 
September 06, 2017, 11:02:17 AM
Plexa: Honestly we haven't looked into that ... I completely forgot about it until now!
September 06, 2017, 05:44:33 AM
Fox: (Referring to the box/crate that would allow you to get stuck.)
September 06, 2017, 05:43:42 AM
Fox: Is SW Atteka Islet the only one that forgets to update the heightmap when save/resetting? ... The Move pillar seems to update it fine... Hm.

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.042 seconds with 22 queries.