Golden Sun Hacking Community
January 23, 2020, 12:06:55 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 18076 times)
0 Members and 1 Guest are viewing this topic.
roger
a programmer that likes supertramp
Jupiter Clan

Regular Member
*

Coins: 20
Offline Offline

I am: chillin'
Posts: 188

« 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
December 24, 2019, 09:33:09 PM
Fox: Even just plain Editor work can make some difference. = At least these forums are indexed on the Search engine. I was also curious about whether to um... go through all the topics on these forums and take all the important stuff out/placed into a folder for a bit of organization. Would be a bonus since if something ever happened to this forum, or if we ever wanted to start afresh again, it wouldn't be that difficult to do so.
December 24, 2019, 09:23:03 PM
Fox: One thing is for sure. This place has become completely dead. (Mostly because of Discord.)  = I don't think much will happen with this forum unless I, Salanewt, or someone else does a thing.
December 24, 2019, 09:18:05 PM
Fox: Probably not?
December 24, 2019, 06:51:08 PM
Luna_blade: I suppose this is the last Christmas of this forum? 
December 24, 2019, 06:50:51 PM
Luna_blade: Yay thanks for the coins
December 19, 2019, 04:39:45 AM
Fox: Okay, another thought... "gsmagic" could be the code name/project name... and "Golden Sun Magic" could be the more formal official name... (As in using both names.)  -  I still need to look into these other games as well... so who knows if it could be better to call it Camelot Magic if those should ever be supported to a decent standard.  Would probably be a long time from now, though. As I can be pretty lazy.
December 18, 2019, 10:01:39 PM
Foreclosure: gsmagic is fine
December 17, 2019, 05:44:32 PM
Fox: Also. I call my program "gsmagic" and not "GSMagic" =P (Not asking for correction/I being silly)... Had to call it something, so picked something short.  Maybe I should rename it to Golden Sun Magic later. *shrug*
December 17, 2019, 05:35:04 PM
Fox: (And "Golden Sun" instead of "GS" to reduce confusion that would likely not be there anyway... when "Golden Sun" doesn't take up much space to start with. (Imagine being new and thinking GS meant GameShark, or some other oddity. Ew.)) - All just thoughts...I'm still going with most of this not mattering that much, though.
December 17, 2019, 05:12:55 PM
Fox: "Misc. GS Hacking" = That name looks odd, so I'd probably just go with "Golden Sun Hacking"
December 17, 2019, 05:08:05 PM
Fox: I tempted to also suggest the Editors can go in the first category. Since the Editor is the reason this place exists in the first place. (I think.)
December 17, 2019, 04:53:19 PM
Fox: (combined = Not meant to be taken literally... but rather.... to generalize things more, since it apparently looks like we don't need the extra space no one is using.)
December 17, 2019, 04:48:49 PM
Fox: Worse still... we've only used those for Golden Sun content.... and there's not much there.
December 17, 2019, 04:45:53 PM
Fox: E.g. Maybe everything in "Assets & Discussion" could be combined with "Creative Works".... I don't feel like sound and art apply to general hacking anyway... that only comes into play when you have tools to insert them.
December 17, 2019, 04:40:26 PM
Fox: categories and/or forums
December 17, 2019, 04:36:48 PM
Fox: Everything else seems to be about right, though. Perhaps some categories could be combined(?), but doesn't really matter that much.
December 17, 2019, 04:33:03 PM
Fox: (I still think The Community section fits best at the bottom. =P)
December 15, 2019, 05:10:04 PM
Salanewt: Heya! I'm planning to get the demo up today, but if you can't wait then it's already available on the Discord.
December 15, 2019, 04:12:27 AM
Fox: (Then sell the badges on the Trade Center for a very high price... and give a lot of active people coins to buy them with, so they can basically transfer the coins to me if they want something... Gosh I could be a naughty hoarder. =P)
December 15, 2019, 04:06:19 AM
Fox: I'd buy up all the stock for each item too... but man... I think I'm too lazy for that. =P
December 15, 2019, 04:01:24 AM
Fox: There we go. That should be all of them.
December 15, 2019, 03:25:32 AM
Fox: Duplicates will still show up as separate entries on the profile as well. Interestingly enough.
December 15, 2019, 03:18:25 AM
Fox: (Well, one of each badge, at least.)
December 15, 2019, 03:18:08 AM
Fox: Now I can buy up the whole shop. :3
December 14, 2019, 08:58:08 PM
Foreclosure: Guys, I really want to see the AI overhaul demo... please fast! :D hehehe
December 14, 2019, 08:57:33 PM
Foreclosure: I sent 2 thousand coins for ya bro
December 14, 2019, 01:31:38 AM
Fox: In my opinion, even with the old system where it was set up so you could only coin people once per hour... I think it would have been far more fair if we could have also coined ourselves hourly.... since people have favoritism for certain people.... I feel like that could mitigate it some. At least to get badges that people care about the most. - Unlimited coining sounds like a step further than that, which is interesting... :)
December 14, 2019, 01:12:00 AM
Fox: Do note, that people can't coin themselves... but I feel if you got someone who's willing to transfer the coins you give them back to you... it is as though you have that coin option on yourself anyway....
December 14, 2019, 01:07:29 AM
Fox: Go to any of my forum posts, look for where it says Coins... under that, you'll see [increase] , clicking that will give me coins. You won't lose anything for doing so. Click it as much as you like... Under that, you should see Send Money (a faster option if you got the coins). Use that link to transfer your coins to me of any amount you want. (e.g. Put in 2000, means I get 2000, you lose 2000... but if I've already given you 2000+, you don't really have to see it as actually losing anything.)
December 13, 2019, 03:42:39 PM
Foreclosure: How do I return favor, sir?

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.094 seconds with 24 queries.