Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updates to Compile #8

Draft
wants to merge 13 commits into
base: master
Choose a base branch
from

Conversation

KungFuFurby
Copy link
Contributor

@KungFuFurby KungFuFurby commented Dec 15, 2021

This is my pull request containing a series of updates for Compile. Initially the intention was to correct typos and include a byte section I determined was actually important regarding the CPU commands, but there's more that's planned...

Specifically...

  • Add binary and disassemble the initialization code at $0400 for all builds
  • Disassemble two new builds discovered in Space Megaforce and the European version of Super Aleste (these actually resemble Jaki Crush more than the Japanese version of Super Aleste)
    • The difference between these two builds and Jaki Crush is surprisingly small: the biggest difference I can think of is that Jaki Crush has a new CPU command with corresponding code (and new memory locations used). The European version of Super Aleste merely has a new bit being utilized in one of the memory locations, which carries over into Jaki Crush.
  • Identify all VCMDs (the IDs never change between all builds (though one of them does change parameter sizes), but sometimes they get replaced by a duplicate: the only build with the complete VCMD set from $80-$B1 as far as the table goes is Super Puyo Puyo)
  • Identify all CPU commands (VCMD $85 directly executes a CPU command, which can be either SFX or the series from $E0 and up... unfortunately, I may need to produce an ARAM map for all of the builds for the zero page area if this were to be fully adapted because the CPU commands can handle any zero page location and any DSP register)
  • Document any envelope formats in the disassembly (volume is noted)

For ARAM map notes, see the raw notes in the SNESSoundDriverDocViewer repo. They are a WIP at this time.

A VCMD ID was incorrect, and a memory location reference is incorrect, as it
only applies to Super Puyo Puyo, Super Puyo Puyo 2 and Super Nazo Puyo.
The same memory location situation applies here: it is incorrect due to
pre-dating Super Puyo Puyo, Super Puyo Puyo 2 and Super Nazo Puyo.
The missing data is actually important to the CPU commands: namely, it indicates
whether the command is queued (zero) or is executed immediately (non-zero).

There is extra code stored at $0400, but it gets overwritten in ARAM after
execution. Therefore, that will be retrieved through a later commit.
The US/European versions of Super Aleste/Space Megaforce do not have a matching
build to the Japanese version of Super Aleste. More notably, they also have
builds unique from each other.
A few more memory location references were caught that are only relevant to
later builds: for Super Aleste, these references are different.
Vibrato usually assumes that the pitch moves back and forth from some sort of
fixed pitch... the way this is coded, though, means that the pitch does not have
to do that, and instead can go in whatever direction it desires. Thus, although
it can be used for vibrato, it has a larger variety of usages, and thus has been
re-identified as a pitch envelope.
Once again, this memory location reference only applies to later games: in Super
Aleste's case, the memory location reference is different.
When utilizing ADSR, both ADSR(2) and GAIN are set to the same value. Thus, the
bit to switch to GAIN in ADSR(1) should work without issue.
Some of this has been ported over from Super Puyo Puyo 2, while a lot of it is
original. Not everything's identified: there's still a few things to sort out.
The same bit was defined twice, when a different bit was meant to be referenced.
There are three VCMDs that are not present in Super Aleste (J): $A4-$A5 and
$B1.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant