Skip to content

docs(debt): list the NGS2 custom modules of PPSA33655 - #8851

Merged
adriadam10 merged 2 commits into
boykopovar:mainfrom
JJenkx:windows/ngs2-debt-ppsa33655-modules
Oct 24, 2026
Merged

adriadam10 merged 2 commits into
boykopovar:mainfrom
JJenkx:windows/ngs2-debt-ppsa33655-modules

Conversation

@JJenkx

@JJenkx JJenkx commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

What

BLUE REFLECTION Quartet (PPSA33655) is a bundle: eboot.bin starts bin/Prospero/B0.elf with sceSystemServiceLoadExec, converted with --executable bin/Prospero/B0.elf (and B1 to B4). B0 stops at start-up in NGS2:

what():  NGS2: custom module id 0x19 is not implemented

A gdb breakpoint on Ngs2CheckCustomRack dumped each Ngs2CustomRackOption the title passes. Using a local diagnostic build that let unknown ids through (not part of this PR), it showed every custom rack it creates before the next throw:

Rack name Voices / ports Buffers Modules (id, option, source / extra / destination buffer)
MixerB 2 / 2 1 0x19, no option, 0/0/0
ReverbB 1 / 1 1 0x15, no option, 0/0/0; 0x1b, 12-byte option 0c000000 01000000 00000000, 0/0/0
DuckingCompSB 1 / 1 2 0x19, no option, 0/0/0; 0x19, no option, 0/1/0

The last rack then stops at NGS2: custom racks with 2 buffers are not implemented. All three are submixer-sized options (1288 bytes) with no module state.

fma-rc's reading of the PS5 12.70 module maps 0x15 to Gain and 0x1b to Reverb. It gives Gain no option and no state, and Reverb a 12-byte option whose word after the size is 0 or 1 (default 1) and no state. That matches ReverbB above. The same reading maps 0x19 to UserFx, which this library still rejects. It also accepts custom racks of 1 to 4 buffers, so DuckingCompSB is a valid rack that this library does not implement yet. Thanks to @oneandonlydean for pointing to it.

main's "NGS2 custom module ids" debt entry now names these modules and their creation errors (#8609, #9233). Rebased onto a2d750122b, this PR only adds PPSA33655 to that entry's list of titles that use them. It does not implement the modules.

Tested

Documentation only. The values come from the gdb dumps of two runs on Windows 11 22621 with libraries built from main. After the rebase onto a2d750122b, tools/check_conventions.py reports no errors and one debt-length warning for this entry. The entry is 1,059 characters: main's entry is already 1,025, over the 1,000-character warning limit, and this adds 34.

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file (no code changed)
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source (none)
  • Generic behaviour, not specific to one title
  • Depends on: none
  • Fixes: none
  • Unblocks: none (documentation; title PPSA33655)
  • GPUs tested: n/a
  • AI-assisted: yes

🤖 Generated with Claude Code

@github-actions github-actions Bot added the docs label Oct 21, 2026
@oneandonlydean

Copy link
Copy Markdown
Collaborator

@JJenkx thanks, the rack dump is useful. #8609 rewrites this same bullet, using fma-rc's reading of the 12.70 module: it names 0x15 as Gain and 0x1b as Reverb, and gives the creation errors for a bad Reverb option. That fits your ReverbB rack (0x15 + 0x1b, with a 12-byte option on 0x1b). Could you cite that reading for 0x15 and 0x1b instead of "inferred only from the rack names", and keep 0x19 as the unknown one? Whichever of the two PRs merges second will have to combine the two versions of the bullet.

@JJenkx

JJenkx commented Oct 21, 2026

Copy link
Copy Markdown
Contributor Author

Thanks, done in c26295c. The entry now cites fma-rc's 12.70 reading for 0x15 (Gain) and 0x1b (Reverb), whose option and state sizes match the ReverbB dump. It keeps 0x19 unknown, since that reading names it UserFx while KytyPS5 and this library use 0x1d. It also notes that the console accepts 1 to 4 buffers, so DuckingCompSB is a valid rack. The entry is 938 characters. The description has the same correction, and its overlap line names #8609: whichever merges second keeps the other's text and adds its own sentences.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@JJenkx
JJenkx force-pushed the windows/ngs2-debt-ppsa33655-modules branch from c26295c to 1352329 Compare October 23, 2026 03:03
@JJenkx

JJenkx commented Oct 23, 2026

Copy link
Copy Markdown
Contributor Author

Rebased onto main a2d750122b to clear the conflict. main's "NGS2 custom module ids" entry now names Gain (0x15), Reverb (0x1b), PitchShift (0x20) and Convolution (0x23) and their creation errors, so most of this PR's old sentence is redundant. The diff is now one clause, adding PPSA33655 (0x15, 0x19 and 0x1b) to the entry's list of titles. The rack dumps in the description are unchanged. tools/check_conventions.py reports no errors and a debt-length warning: the entry is 1,059 characters, and main's is already 1,025.

@github-actions github-actions Bot removed the needs rebase Conflicts with main, rebase needed label Oct 23, 2026
@github-actions github-actions Bot added the needs rebase Conflicts with main, rebase needed label Oct 23, 2026
…a33655-modules

# Conflicts:
#	docs/dev/debt/libSceNgs2.native.md
@github-actions github-actions Bot removed the needs rebase Conflicts with main, rebase needed label Oct 23, 2026
@adriadam10 adriadam10 self-assigned this Oct 24, 2026
@adriadam10
adriadam10 merged commit 892b4ec into boykopovar:main Oct 24, 2026
9 checks passed
@adriadam10

Copy link
Copy Markdown
Collaborator

Checked the added title against the rack dump in the description and the existing entry's wording (Gain 0x15, Reverb 0x1b, UserFx 0x19 per the cited 12.70 reading); docs only, Conventions green; merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants