User:Mauve/RollCaster
Jump to navigation
Jump to search
Test build
None. Go use 120221.
Suggestion box
Stuff other people have brought up to me that I may or may not do.
Bugs:
- Still minor desyncs occasionally. Probably unfixable.
Feature removal:
- Does anybody still want the terrible practice dummy? More work to remove than to leave in.
Interface:
- SFX toggle key. Not doing this.
- GUI interface. Not doing this.
- GUI configuration. Not doing this.
Dissecting IaMP
This is old information from back when I was originally developing RollCaster. Incomplete.
Static pointers:
6711fc - ? 67135c - ? 67136c - ? 6713a4 - sound data struct 671418 - player 1 struct 67141c - player 2 struct 671424 - background graphics struct 67143c - ? 6714c4 - ? 671618 - sound effect table, size 14 (probably vector) 6716cc - temporary effect table, size 94 (deque from 6716c8) 6716e0 - effect table, size 94 (deque from 6716dc) 6716fc - ? 67170c - ? 671744 - ? 6718a8 - game inputs table (deque from 6718a4) 6718bc - game RNG table (deque from 6718b8) 6718d0 - game running data table? Unknown contents. (deque from 6718cc) 6718e4 - game cheat/extra effects table (deque from 6718e0) 68be0c - ? 68be20 - ? 68be48 - ?
Player struct has variable size:
Character VTable Size ------------------------------ Reimu 6590d8 1000 Marisa 6592b8 1830 Sakuya 6594a8 0fec Alice 659608 0fec Patchouli 659768 0fe8 Youmu 6598d0 0ff8 Remilia 659a40 0fe4 Yuyuko 659b80 0fe8 Yukari 659cc0 1008 Suika 659e30 1000 Meiling 659f50 1000
Player struct pointers:
+004: pointer to character graphics table +008: pointer to frame data frame +074: pointer to frame data frame +078: pointer to current frame sequence +0ac: pointer to frame data frame +0b0: pointer to current frame sequence again +2e8: pointer to other player +2ec: pointer to effect struct, size 0x54 effect struct + 1c: effect map pointer +46c: pointer to .. local? frame data table +480: pointer to rendering-related temporary data +51c: pointer to input buffer +534: ? (related to current frame?) +6d4: pointer to sound effect information, size 0xc8, probably vector from +6d0 +ee8: ? (frame data again... effects?) +ff0: pointer to ghost/clone information. Youmu only.
Rendering structure is stored on the stack, allocated from the call at 6030af. It is 0x11c bytes in size.
Render struct pointers:
+ 0x08: ? 0x50 byte struct ? + 0x0c: ? 0x1e4 byte struct ? + 0x1c: ? 0x2c byte struct + 0x44: player 1 struct + 0x48: player 2 struct + 0x4c: ? one byte? + 0x50: player 1 combo counter information + 0x54: player 2 combo counter information
Background structure has variable sized based on stage and the simplified background setting. Table is too obnoxious to write here. All are between 0x68 and 0xf8 in size except for Suika's stage, which is 0x1d28. Yes, 0x1d28. Please don't use this one in netplay.
IaMP data types:
- A map, as defined here, is a segmented array basically. In reality, it is std::deque<>. Rather than having one large array that it reallocates, it has an array that consists of sub-arrays, each holding four elements each. The map roots are five ints in size and the contents are as follows:
+00: unused; nonexistent vtable ptr +04: pointer to base array +08: number of entries in base array (number of 4 blocks) +0C: starting entry number +10: number of entries
- IaMP lists are very simple. They consist of a pointer to a root element and a count. The root element is not used, but it is of the correct size and type for the data that is used. The first two ints of data for each element are pointers forwards and backwards, respectively.