From 0ac318979e215c4ea4b837bfa69fa50f44397b23 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Thu, 20 Feb 2025 20:23:41 -0600 Subject: [PATCH 1/2] Document some basic ball physics stuff --- data/rom.s | 6 +++--- include/global.h | 9 +++++---- src/pinball_game_main.c | 24 ++++++++++++------------ src/rom_31F6C.c | 24 ++++++++++++------------ 4 files changed, 32 insertions(+), 31 deletions(-) diff --git a/data/rom.s b/data/rom.s index 1fc4e0c..339d486 100644 --- a/data/rom.s +++ b/data/rom.s @@ -1061,13 +1061,13 @@ gUnknown_08118680:: @ 0x08118680 .include "data/graphics/titlescreen.inc" gUnknown_08137900:: @ 0x08137900 - .incbin "baserom.gba", 0x137900, 0x8 + .2byte 1, 1, 1, 0 gUnknown_08137908:: @ 0x08137908 - .incbin "baserom.gba", 0x137908, 0x8 + .2byte 1, 0, 1, 0 gUnknown_08137910:: @ 0x08137910 - .incbin "baserom.gba", 0x137910, 0x8 + .2byte 1, 0, 0, 0 gIdlePinballGameStateFuncs:: @ 0x08137918 .4byte sub_19048 diff --git a/include/global.h b/include/global.h index 87fdf87..dde062d 100644 --- a/include/global.h +++ b/include/global.h @@ -80,6 +80,7 @@ struct UnkPinballGame1334_unk2C s16 unk2; }; +// This struct holds data about the ball's velocity, position, etc. struct UnkPinballGame1334 { /*0x00*/ u8 unk0; @@ -94,10 +95,10 @@ struct UnkPinballGame1334 /*0x20*/ u8 filler20[0x8]; /*0x28*/ struct UnkPinballGame1334_unk2C unk28; /*0x2C*/ struct UnkPinballGame1334_unk2C unk2C; - /*0x30*/ u16 unk30; - /*0x32*/ u16 unk32; - /*0x34*/ u32 unk34; - /*0x38*/ u32 unk38; + /*0x30*/ s16 xVelocity; + /*0x32*/ s16 yVelocity; + /*0x34*/ u32 xPosition; // fixed-point Q_24_8 values? + /*0x38*/ u32 yPosition; /*0x3C*/ u8 filler3C[0x8]; }; diff --git a/src/pinball_game_main.c b/src/pinball_game_main.c index 575b6e1..ea21754 100644 --- a/src/pinball_game_main.c +++ b/src/pinball_game_main.c @@ -398,11 +398,11 @@ void sub_4A6A0(void) case 0: gCurrentPinballGame->unk132c->unk10 = 119; gCurrentPinballGame->unk132c->unk12 = 279; - gCurrentPinballGame->unk132c->unk30 = 0; - gCurrentPinballGame->unk132c->unk32 = 0; + gCurrentPinballGame->unk132c->xVelocity = 0; + gCurrentPinballGame->unk132c->yVelocity = 0; gCurrentPinballGame->unk132c->unk6 = 0; - gCurrentPinballGame->unk132c->unk34 = gCurrentPinballGame->unk132c->unk10 << 8; - gCurrentPinballGame->unk132c->unk38 = gCurrentPinballGame->unk132c->unk12 << 8; + gCurrentPinballGame->unk132c->xPosition = gCurrentPinballGame->unk132c->unk10 << 8; + gCurrentPinballGame->unk132c->yPosition = gCurrentPinballGame->unk132c->unk12 << 8; gCurrentPinballGame->unk132c->unkE = 128; gCurrentPinballGame->unk132c->unk0 = 1; gCurrentPinballGame->unk1F = 1; @@ -420,11 +420,11 @@ void sub_4A6A0(void) case 1: gCurrentPinballGame->unk132c->unk10 = 140; gCurrentPinballGame->unk132c->unk12 = 183; - gCurrentPinballGame->unk132c->unk30 = 0; - gCurrentPinballGame->unk132c->unk32 = 0; + gCurrentPinballGame->unk132c->xVelocity = 0; + gCurrentPinballGame->unk132c->yVelocity = 0; gCurrentPinballGame->unk132c->unk6 = 0; - gCurrentPinballGame->unk132c->unk34 = gCurrentPinballGame->unk132c->unk10 << 8; - gCurrentPinballGame->unk132c->unk38 = gCurrentPinballGame->unk132c->unk12 << 8; + gCurrentPinballGame->unk132c->xPosition = gCurrentPinballGame->unk132c->unk10 << 8; + gCurrentPinballGame->unk132c->yPosition = gCurrentPinballGame->unk132c->unk12 << 8; gCurrentPinballGame->unk132c->unkE = 128; gCurrentPinballGame->unk132c->unk0 = 1; gCurrentPinballGame->unk1F = 1; @@ -436,11 +436,11 @@ void sub_4A6A0(void) case 2: gCurrentPinballGame->unk132c->unk10 = -28; gCurrentPinballGame->unk132c->unk12 = -10; - gCurrentPinballGame->unk132c->unk30 = 0; - gCurrentPinballGame->unk132c->unk32 = 0; + gCurrentPinballGame->unk132c->xVelocity = 0; + gCurrentPinballGame->unk132c->yVelocity = 0; gCurrentPinballGame->unk132c->unk6 = 0; - gCurrentPinballGame->unk132c->unk34 = gCurrentPinballGame->unk132c->unk10 << 8; - gCurrentPinballGame->unk132c->unk38 = gCurrentPinballGame->unk132c->unk12 << 8; + gCurrentPinballGame->unk132c->xPosition = gCurrentPinballGame->unk132c->unk10 << 8; + gCurrentPinballGame->unk132c->yPosition = gCurrentPinballGame->unk132c->unk12 << 8; gCurrentPinballGame->unk132c->unkE = 128; gCurrentPinballGame->unk132c->unk0 = 1; gCurrentPinballGame->unk1F = 1; diff --git a/src/rom_31F6C.c b/src/rom_31F6C.c index c77a9a5..4522825 100644 --- a/src/rom_31F6C.c +++ b/src/rom_31F6C.c @@ -493,14 +493,14 @@ void sub_329F4(void) gCurrentPinballGame->unk132c->unk0 = 1; gCurrentPinballGame->unk1F = 1; gCurrentPinballGame->unk28--; - gCurrentPinballGame->unk132c->unk30 = 0; - gCurrentPinballGame->unk132c->unk32 = 0; + gCurrentPinballGame->unk132c->xVelocity = 0; + gCurrentPinballGame->unk132c->yVelocity = 0; gCurrentPinballGame->unk132c->unk10 = 58; gCurrentPinballGame->unk132c->unk12 = 178; gCurrentPinballGame->unk132c->unk28.unk0 = gCurrentPinballGame->unk132c->unk10 * 2; gCurrentPinballGame->unk132c->unk28.unk2 = gCurrentPinballGame->unk132c->unk12 * 2; - gCurrentPinballGame->unk132c->unk34 = gCurrentPinballGame->unk132c->unk10 * 256; - gCurrentPinballGame->unk132c->unk38 = gCurrentPinballGame->unk132c->unk12 * 256; + gCurrentPinballGame->unk132c->xPosition = gCurrentPinballGame->unk132c->unk10 << 8; + gCurrentPinballGame->unk132c->yPosition = gCurrentPinballGame->unk132c->unk12 << 8; if (gCurrentPinballGame->unk28 <= 0x31) { @@ -528,8 +528,8 @@ void sub_329F4(void) gCurrentPinballGame->unk132c->unk0 = 0; gCurrentPinballGame->unk1F = 0; gCurrentPinballGame->unk26 = 0x3C; - gCurrentPinballGame->unk132c->unk30 = 0x60; - gCurrentPinballGame->unk132c->unk32 = 0xC0; + gCurrentPinballGame->unk132c->xVelocity = 0x60; + gCurrentPinballGame->unk132c->yVelocity = 0xC0; gCurrentPinballGame->unk132c->unk10 = 0x3C; gCurrentPinballGame->unk132c->unk12 = 0xB4; gCurrentPinballGame->unk132c->unk6 = 0; @@ -569,8 +569,8 @@ void sub_32BE4(void) gCurrentPinballGame->unk5F7 = 1; gCurrentPinballGame->unk1F = 1; gCurrentPinballGame->unk28--; - gCurrentPinballGame->unk132c->unk30 = 0; - gCurrentPinballGame->unk132c->unk32 = 0; + gCurrentPinballGame->unk132c->xVelocity = 0; + gCurrentPinballGame->unk132c->yVelocity = 0; gCurrentPinballGame->unk132c->unk6 = 0; if (gCurrentPinballGame->unk28 > 97) { @@ -630,8 +630,8 @@ void sub_32BE4(void) gCurrentPinballGame->unk132c->unk28.unk0 = gCurrentPinballGame->unk132c->unk10 * 2; gCurrentPinballGame->unk132c->unk28.unk2 = gCurrentPinballGame->unk132c->unk12 * 2; - gCurrentPinballGame->unk132c->unk34 = gCurrentPinballGame->unk132c->unk10 * 256; - gCurrentPinballGame->unk132c->unk38 = gCurrentPinballGame->unk132c->unk12 * 256; + gCurrentPinballGame->unk132c->xPosition = gCurrentPinballGame->unk132c->unk10 << 8; + gCurrentPinballGame->unk132c->yPosition = gCurrentPinballGame->unk132c->unk12 << 8; } else { @@ -639,8 +639,8 @@ void sub_32BE4(void) gCurrentPinballGame->unk1F = 0; gCurrentPinballGame->unk26 = 60; gCurrentPinballGame->unk132c->unk6 = 0; - gCurrentPinballGame->unk132c->unk30 = 0xFF9A; - gCurrentPinballGame->unk132c->unk32 = 200; + gCurrentPinballGame->unk132c->xVelocity = -0x66; + gCurrentPinballGame->unk132c->yVelocity = 0xC8; sub_11B0(7); gCurrentPinballGame->unk132c->unk6 = 0; gCurrentPinballGame->unk132c->unk10 = 0xAB; From 2afa19326c15d82383b8a5ab5bd6007fb5da2f09 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Fri, 21 Feb 2025 08:03:17 -0600 Subject: [PATCH 2/2] sub_11C14 --- asm/rom_11B9C.s | 69 -------------------------------------- expected_objs/sub_11C14.o | Bin 1116 -> 0 bytes include/global.h | 30 +++++++---------- include/types.h | 16 +++++++-- include/variables.h | 12 +++---- src/bonus_field_select.c | 4 +-- src/pinball_game_main.c | 36 ++++++++++---------- src/rom_11B9C.c | 28 ++++++++++++++-- src/rom_31F6C.c | 68 ++++++++++++++++++------------------- 9 files changed, 112 insertions(+), 151 deletions(-) delete mode 100644 expected_objs/sub_11C14.o diff --git a/asm/rom_11B9C.s b/asm/rom_11B9C.s index 79ab7a8..8daca3b 100644 --- a/asm/rom_11B9C.s +++ b/asm/rom_11B9C.s @@ -8,75 +8,6 @@ .section .text11C14 .align 2, 0 - - thumb_func_start sub_11C14 -sub_11C14: @ 0x08011C14 - push {r4, r5, lr} - ldr r3, _08011C6C @ =gCurrentPinballGame - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - lsls r1, r0, #4 - adds r1, r1, r0 - lsls r1, r1, #2 - ldr r0, _08011C70 @ =0x00001334 - adds r1, r1, r0 - ldr r0, [r3] - adds r4, r0, r1 - ldr r1, _08011C74 @ =gUnknown_02031520 - ldrh r0, [r1, #0x26] - movs r2, #0 - strh r0, [r4, #0x10] - ldrh r0, [r1, #0x28] - strh r0, [r4, #0x12] - movs r5, #0x10 - ldrsh r0, [r4, r5] - lsls r0, r0, #8 - str r0, [r4, #0x34] - movs r5, #0x12 - ldrsh r0, [r4, r5] - lsls r0, r0, #8 - str r0, [r4, #0x38] - movs r5, #0x26 - ldrsh r0, [r1, r5] - lsls r0, r0, #1 - strh r0, [r4, #0x28] - movs r5, #0x28 - ldrsh r0, [r1, r5] - lsls r0, r0, #1 - strh r0, [r4, #0x2a] - movs r0, #0x80 - lsls r0, r0, #1 - strh r0, [r4, #0xe] - strh r2, [r4, #0x30] - strh r2, [r4, #0x32] - ldr r0, _08011C78 @ =gMain - ldrb r0, [r0, #4] - cmp r0, #0 - bne _08011C7C - movs r0, #3 - b _08011C7E - .align 2, 0 -_08011C6C: .4byte gCurrentPinballGame -_08011C70: .4byte 0x00001334 -_08011C74: .4byte gUnknown_02031520 -_08011C78: .4byte gMain -_08011C7C: - movs r0, #1 -_08011C7E: - strb r0, [r4, #1] - movs r0, #0 - strh r0, [r4, #6] - ldr r0, [r3] - ldr r1, _08011C94 @ =0x000005B2 - adds r0, r0, r1 - movs r1, #1 - strb r1, [r0] - pop {r4, r5} - pop {r0} - bx r0 - .align 2, 0 -_08011C94: .4byte 0x000005B2 - thumb_func_start sub_11C98 sub_11C98: @ 0x08011C98 push {r4, r5, r6, r7, lr} diff --git a/expected_objs/sub_11C14.o b/expected_objs/sub_11C14.o deleted file mode 100644 index a3ebccb3115b50d8b786b939c58342a673736e28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1116 zcma)5%Wl&^6g^`%#onNjQppkvOw^!AAj>JHEjw3fAQ5DPK(IiH?It3jB}9oUs92Cz zv=S2h0SmqXfyAO8z?L1$d;}lBy|%}hWCJ%EpL4Fy+O-s%E$lpOZ9Up;HLniE0{5T?u39&KQ(kZ+mf#mvI;o#-kK_l8w3tPTYMH!|8-^2qzkk z;ZSclVH}V8(P7*jbLsyIZZW>u<;>0hf%h3_SjzYnLX(D{>CYO#{lN2hKKl$BZZvX%Q diff --git a/include/global.h b/include/global.h index dde062d..f65be71 100644 --- a/include/global.h +++ b/include/global.h @@ -74,31 +74,23 @@ struct BgOffsets u16 yOffset; }; -struct UnkPinballGame1334_unk2C -{ - s16 unk0; - s16 unk2; -}; - // This struct holds data about the ball's velocity, position, etc. struct UnkPinballGame1334 { /*0x00*/ u8 unk0; - /*0x01*/ u8 filler1[0x5]; + /*0x01*/ u8 unk1; + /*0x02*/ u8 filler2[0x4]; /*0x06*/ u16 unk6; /*0x08*/ u8 filler8[0x6]; /*0x0E*/ u16 unkE; - /*0x10*/ s16 unk10; - /*0x12*/ s16 unk12; + /*0x10*/ struct Coords16 unk10; /*0x14*/ u8 filler14[0xB]; /*0x1F*/ u8 unk1F; /*0x20*/ u8 filler20[0x8]; - /*0x28*/ struct UnkPinballGame1334_unk2C unk28; - /*0x2C*/ struct UnkPinballGame1334_unk2C unk2C; - /*0x30*/ s16 xVelocity; - /*0x32*/ s16 yVelocity; - /*0x34*/ u32 xPosition; // fixed-point Q_24_8 values? - /*0x38*/ u32 yPosition; + /*0x28*/ struct Coords16 unk28; + /*0x2C*/ struct Coords16 unk2C; + /*0x30*/ struct Coords16 velocity; + /*0x34*/ struct Coords32 position; // fixed-point Q_24_8 values /*0x3C*/ u8 filler3C[0x8]; }; @@ -237,7 +229,9 @@ struct PinballGame /*0x59A*/ u8 filler59A[0x2]; /*0x59C*/ u16 lastCatchSpecies; // Previous catch mode species? /*0x59E*/ u16 lastEggSpecies; // Previous hatch/evo mode species? - /*0x5A0*/ u8 filler5A0[0x50]; + /*0x5A0*/ u8 filler5A0[0x12]; + /*0x5B2*/ u8 unk5B2; + /*0x5B3*/ u8 filler5B3[0x3D]; /*0x5F0*/ u16 caughtMonCount; // Number of mons caught in this game /*0x5F2*/ u8 filler5F2[0x4]; /*0x5F6*/ s8 unk5F6; @@ -321,7 +315,9 @@ struct Unk02031520 /*0x0A*/ u8 fillerA[0x2]; /*0x0C*/ struct PinballGame *unkC; /*0x10*/ struct Unk02031520_unk10 *unk10; - /*0x14*/ u8 filler14[0x18]; + /*0x14*/ u8 filler14[0x12]; + /*0x26*/ s16 unk26; + /*0x28*/ s16 unk28; /*0x2C*/ u8 *unk2C; }; diff --git a/include/types.h b/include/types.h index 768add4..a5401f5 100644 --- a/include/types.h +++ b/include/types.h @@ -32,13 +32,25 @@ struct SpriteGroup }; // size: 0xB8 -struct Coord16 +struct Coords16 +{ + s16 x; + s16 y; +}; + +struct UCoords16 { u16 x; u16 y; }; -struct Coord32 +struct Coords32 +{ + s32 x; + s32 y; +}; + +struct UCoords32 { u32 x; u32 y; diff --git a/include/variables.h b/include/variables.h index d5b7651..5b79aac 100644 --- a/include/variables.h +++ b/include/variables.h @@ -136,7 +136,7 @@ extern const s16 gEReaderAccessButtonSequence[]; //extern ? gMonHatchSpriteGroup3_Gfx; //extern ? gMonHatchSpriteGroup4_Gfx; //extern ? gMonHatchSpriteGroup5_Gfx; -extern struct Coord16 gUnknown_086A6B28[]; +extern struct UCoords16 gUnknown_086A6B28[]; extern const struct SpriteSet *const gUnknown_086A6AD4[]; extern const struct SpriteSet *const gUnknown_086A7DA8[]; extern const struct SpriteSet *const gUnknown_086A7DB0[]; @@ -195,11 +195,11 @@ extern const u16 gTitlescreenSprites_Pals[]; //extern ? gMonPortraitsGroup11_Pals; //extern ? gMonPortraitsGroup12_Pals; //extern ? gMonPortraitsGroup13_Pals; -extern struct Coord16 gUnknown_086A9684[]; -extern struct Coord16 gUnknown_086A9694[]; -extern struct Coord16 gUnknown_086A96AC[]; -extern struct Coord16 gUnknown_086A96C0[]; -extern const struct Coord32 gUnknown_080797F0[2][8]; +extern struct UCoords16 gUnknown_086A9684[]; +extern struct UCoords16 gUnknown_086A9694[]; +extern struct UCoords16 gUnknown_086A96AC[]; +extern struct UCoords16 gUnknown_086A96C0[]; +extern const struct UCoords32 gUnknown_080797F0[2][8]; extern u16 gUnknown_02019C40[]; extern s16 gUnknown_0201A514; diff --git a/src/bonus_field_select.c b/src/bonus_field_select.c index ac89bf6..df26390 100644 --- a/src/bonus_field_select.c +++ b/src/bonus_field_select.c @@ -18,8 +18,8 @@ EWRAM_DATA u8 gUnknown_0202BEE8 = 0; extern void (*const gBonusFieldSelectStateFuncs[])(void); extern const struct SpriteSet *const gUnknown_086A4C80[16]; -extern const struct Coord16 gUnknown_086A4CC0[]; -extern const struct Coord16 gUnknown_086A4CD8[]; +extern const struct UCoords16 gUnknown_086A4CC0[]; +extern const struct UCoords16 gUnknown_086A4CD8[]; extern const u8 gUnknown_086A4CF0[]; extern const u8 gUnknown_0807AAE0[]; diff --git a/src/pinball_game_main.c b/src/pinball_game_main.c index ea21754..50bb9e3 100644 --- a/src/pinball_game_main.c +++ b/src/pinball_game_main.c @@ -396,13 +396,13 @@ void sub_4A6A0(void) switch (gCurrentPinballGame->unk282) { case 0: - gCurrentPinballGame->unk132c->unk10 = 119; - gCurrentPinballGame->unk132c->unk12 = 279; - gCurrentPinballGame->unk132c->xVelocity = 0; - gCurrentPinballGame->unk132c->yVelocity = 0; + gCurrentPinballGame->unk132c->unk10.x = 119; + gCurrentPinballGame->unk132c->unk10.y = 279; + gCurrentPinballGame->unk132c->velocity.x = 0; + gCurrentPinballGame->unk132c->velocity.y = 0; gCurrentPinballGame->unk132c->unk6 = 0; - gCurrentPinballGame->unk132c->xPosition = gCurrentPinballGame->unk132c->unk10 << 8; - gCurrentPinballGame->unk132c->yPosition = gCurrentPinballGame->unk132c->unk12 << 8; + gCurrentPinballGame->unk132c->position.x = gCurrentPinballGame->unk132c->unk10.x << 8; + gCurrentPinballGame->unk132c->position.y = gCurrentPinballGame->unk132c->unk10.y << 8; gCurrentPinballGame->unk132c->unkE = 128; gCurrentPinballGame->unk132c->unk0 = 1; gCurrentPinballGame->unk1F = 1; @@ -418,13 +418,13 @@ void sub_4A6A0(void) gCurrentPinballGame->unk4E = 215; break; case 1: - gCurrentPinballGame->unk132c->unk10 = 140; - gCurrentPinballGame->unk132c->unk12 = 183; - gCurrentPinballGame->unk132c->xVelocity = 0; - gCurrentPinballGame->unk132c->yVelocity = 0; + gCurrentPinballGame->unk132c->unk10.x = 140; + gCurrentPinballGame->unk132c->unk10.y = 183; + gCurrentPinballGame->unk132c->velocity.x = 0; + gCurrentPinballGame->unk132c->velocity.y = 0; gCurrentPinballGame->unk132c->unk6 = 0; - gCurrentPinballGame->unk132c->xPosition = gCurrentPinballGame->unk132c->unk10 << 8; - gCurrentPinballGame->unk132c->yPosition = gCurrentPinballGame->unk132c->unk12 << 8; + gCurrentPinballGame->unk132c->position.x = gCurrentPinballGame->unk132c->unk10.x << 8; + gCurrentPinballGame->unk132c->position.y = gCurrentPinballGame->unk132c->unk10.y << 8; gCurrentPinballGame->unk132c->unkE = 128; gCurrentPinballGame->unk132c->unk0 = 1; gCurrentPinballGame->unk1F = 1; @@ -434,13 +434,13 @@ void sub_4A6A0(void) gCurrentPinballGame->unk4E = 118; break; case 2: - gCurrentPinballGame->unk132c->unk10 = -28; - gCurrentPinballGame->unk132c->unk12 = -10; - gCurrentPinballGame->unk132c->xVelocity = 0; - gCurrentPinballGame->unk132c->yVelocity = 0; + gCurrentPinballGame->unk132c->unk10.x = -28; + gCurrentPinballGame->unk132c->unk10.y = -10; + gCurrentPinballGame->unk132c->velocity.x = 0; + gCurrentPinballGame->unk132c->velocity.y = 0; gCurrentPinballGame->unk132c->unk6 = 0; - gCurrentPinballGame->unk132c->xPosition = gCurrentPinballGame->unk132c->unk10 << 8; - gCurrentPinballGame->unk132c->yPosition = gCurrentPinballGame->unk132c->unk12 << 8; + gCurrentPinballGame->unk132c->position.x = gCurrentPinballGame->unk132c->unk10.x << 8; + gCurrentPinballGame->unk132c->position.y = gCurrentPinballGame->unk132c->unk10.y << 8; gCurrentPinballGame->unk132c->unkE = 128; gCurrentPinballGame->unk132c->unk0 = 1; gCurrentPinballGame->unk1F = 1; diff --git a/src/rom_11B9C.c b/src/rom_11B9C.c index 7d2abdb..3fd8fda 100644 --- a/src/rom_11B9C.c +++ b/src/rom_11B9C.c @@ -1,8 +1,9 @@ -#include "constants/bg_music.h" -#include "main.h" #include "global.h" +#include "main.h" +#include "constants/bg_music.h" +#include "constants/fields.h" -void sub_11C14(s32); +void sub_11C14(s16); void sub_12524(void); void sub_12BF8(void); @@ -25,3 +26,24 @@ void sub_11B9C(void) sub_12BF8(); } } + +void sub_11C14(s16 arg0) +{ + struct UnkPinballGame1334 *var0 = &gCurrentPinballGame->unk1334[arg0]; + var0->unk10.x = gUnknown_02031520.unk26; + var0->unk10.y = gUnknown_02031520.unk28; + var0->position.x = Q_24_8(var0->unk10.x); + var0->position.y = Q_24_8(var0->unk10.y); + var0->unk28.x = gUnknown_02031520.unk26 * 2; + var0->unk28.y = gUnknown_02031520.unk28 * 2; + var0->unkE = 0x100; + var0->velocity.x = 0; + var0->velocity.y = 0; + if (gMain.selectedField == FIELD_RUBY) + var0->unk1 = 3; + else + var0->unk1 = 1; + + var0->unk6 = 0; + gCurrentPinballGame->unk5B2 = 1; +} diff --git a/src/rom_31F6C.c b/src/rom_31F6C.c index 4522825..3ca3ff0 100644 --- a/src/rom_31F6C.c +++ b/src/rom_31F6C.c @@ -493,14 +493,14 @@ void sub_329F4(void) gCurrentPinballGame->unk132c->unk0 = 1; gCurrentPinballGame->unk1F = 1; gCurrentPinballGame->unk28--; - gCurrentPinballGame->unk132c->xVelocity = 0; - gCurrentPinballGame->unk132c->yVelocity = 0; - gCurrentPinballGame->unk132c->unk10 = 58; - gCurrentPinballGame->unk132c->unk12 = 178; - gCurrentPinballGame->unk132c->unk28.unk0 = gCurrentPinballGame->unk132c->unk10 * 2; - gCurrentPinballGame->unk132c->unk28.unk2 = gCurrentPinballGame->unk132c->unk12 * 2; - gCurrentPinballGame->unk132c->xPosition = gCurrentPinballGame->unk132c->unk10 << 8; - gCurrentPinballGame->unk132c->yPosition = gCurrentPinballGame->unk132c->unk12 << 8; + gCurrentPinballGame->unk132c->velocity.x = 0; + gCurrentPinballGame->unk132c->velocity.y = 0; + gCurrentPinballGame->unk132c->unk10.x = 58; + gCurrentPinballGame->unk132c->unk10.y = 178; + gCurrentPinballGame->unk132c->unk28.x = gCurrentPinballGame->unk132c->unk10.x * 2; + gCurrentPinballGame->unk132c->unk28.y = gCurrentPinballGame->unk132c->unk10.y * 2; + gCurrentPinballGame->unk132c->position.x = gCurrentPinballGame->unk132c->unk10.x << 8; + gCurrentPinballGame->unk132c->position.y = gCurrentPinballGame->unk132c->unk10.y << 8; if (gCurrentPinballGame->unk28 <= 0x31) { @@ -528,14 +528,14 @@ void sub_329F4(void) gCurrentPinballGame->unk132c->unk0 = 0; gCurrentPinballGame->unk1F = 0; gCurrentPinballGame->unk26 = 0x3C; - gCurrentPinballGame->unk132c->xVelocity = 0x60; - gCurrentPinballGame->unk132c->yVelocity = 0xC0; - gCurrentPinballGame->unk132c->unk10 = 0x3C; - gCurrentPinballGame->unk132c->unk12 = 0xB4; + gCurrentPinballGame->unk132c->velocity.x = 0x60; + gCurrentPinballGame->unk132c->velocity.y = 0xC0; + gCurrentPinballGame->unk132c->unk10.x = 0x3C; + gCurrentPinballGame->unk132c->unk10.y = 0xB4; gCurrentPinballGame->unk132c->unk6 = 0; gCurrentPinballGame->unk5F7 = 0; - gCurrentPinballGame->unk132c->unk28.unk0 = gCurrentPinballGame->unk132c->unk10 * 2; - gCurrentPinballGame->unk132c->unk28.unk2 = gCurrentPinballGame->unk132c->unk12 * 2; + gCurrentPinballGame->unk132c->unk28.x = gCurrentPinballGame->unk132c->unk10.x * 2; + gCurrentPinballGame->unk132c->unk28.y = gCurrentPinballGame->unk132c->unk10.y * 2; gCurrentPinballGame->unk25 = 0; m4aSongNumStart(SE_UNKNOWN_0xC3); @@ -569,21 +569,21 @@ void sub_32BE4(void) gCurrentPinballGame->unk5F7 = 1; gCurrentPinballGame->unk1F = 1; gCurrentPinballGame->unk28--; - gCurrentPinballGame->unk132c->xVelocity = 0; - gCurrentPinballGame->unk132c->yVelocity = 0; + gCurrentPinballGame->unk132c->velocity.x = 0; + gCurrentPinballGame->unk132c->velocity.y = 0; gCurrentPinballGame->unk132c->unk6 = 0; if (gCurrentPinballGame->unk28 > 97) { gCurrentPinballGame->unk5FA = 1; gCurrentPinballGame->unk2F4 = 2; - gCurrentPinballGame->unk132c->unk10 = 0xb5; - gCurrentPinballGame->unk132c->unk12 = 0xc3; + gCurrentPinballGame->unk132c->unk10.x = 0xb5; + gCurrentPinballGame->unk132c->unk10.y = 0xc3; } else if (gCurrentPinballGame->unk28 > 94) { gCurrentPinballGame->unk2F4 = 3; - gCurrentPinballGame->unk132c->unk10 = 0xb8; - gCurrentPinballGame->unk132c->unk12 = 0xbb; + gCurrentPinballGame->unk132c->unk10.x = 0xb8; + gCurrentPinballGame->unk132c->unk10.y = 0xbb; } else if (gCurrentPinballGame->unk28 > 91) { @@ -618,20 +618,20 @@ void sub_32BE4(void) { gCurrentPinballGame->unk132c->unk0 = 0; gCurrentPinballGame->unk2F4 = 10; - gCurrentPinballGame->unk132c->unk10 = 0xb5; - gCurrentPinballGame->unk132c->unk12 = 0xc3; + gCurrentPinballGame->unk132c->unk10.x = 0xb5; + gCurrentPinballGame->unk132c->unk10.y = 0xc3; } else { gCurrentPinballGame->unk2F4 = 11; - gCurrentPinballGame->unk132c->unk10 = 0xb0; - gCurrentPinballGame->unk132c->unk12 = 0xca; + gCurrentPinballGame->unk132c->unk10.x = 0xb0; + gCurrentPinballGame->unk132c->unk10.y = 0xca; } - gCurrentPinballGame->unk132c->unk28.unk0 = gCurrentPinballGame->unk132c->unk10 * 2; - gCurrentPinballGame->unk132c->unk28.unk2 = gCurrentPinballGame->unk132c->unk12 * 2; - gCurrentPinballGame->unk132c->xPosition = gCurrentPinballGame->unk132c->unk10 << 8; - gCurrentPinballGame->unk132c->yPosition = gCurrentPinballGame->unk132c->unk12 << 8; + gCurrentPinballGame->unk132c->unk28.x = gCurrentPinballGame->unk132c->unk10.x * 2; + gCurrentPinballGame->unk132c->unk28.y = gCurrentPinballGame->unk132c->unk10.y * 2; + gCurrentPinballGame->unk132c->position.x = gCurrentPinballGame->unk132c->unk10.x << 8; + gCurrentPinballGame->unk132c->position.y = gCurrentPinballGame->unk132c->unk10.y << 8; } else { @@ -639,14 +639,14 @@ void sub_32BE4(void) gCurrentPinballGame->unk1F = 0; gCurrentPinballGame->unk26 = 60; gCurrentPinballGame->unk132c->unk6 = 0; - gCurrentPinballGame->unk132c->xVelocity = -0x66; - gCurrentPinballGame->unk132c->yVelocity = 0xC8; + gCurrentPinballGame->unk132c->velocity.x = -0x66; + gCurrentPinballGame->unk132c->velocity.y = 0xC8; sub_11B0(7); gCurrentPinballGame->unk132c->unk6 = 0; - gCurrentPinballGame->unk132c->unk10 = 0xAB; - gCurrentPinballGame->unk132c->unk12 = 0xD4; - gCurrentPinballGame->unk132c->unk28.unk0 = gCurrentPinballGame->unk132c->unk10 * 2; - gCurrentPinballGame->unk132c->unk28.unk2 = gCurrentPinballGame->unk132c->unk12 * 2; + gCurrentPinballGame->unk132c->unk10.x = 0xAB; + gCurrentPinballGame->unk132c->unk10.y = 0xD4; + gCurrentPinballGame->unk132c->unk28.x = gCurrentPinballGame->unk132c->unk10.x * 2; + gCurrentPinballGame->unk132c->unk28.y = gCurrentPinballGame->unk132c->unk10.y * 2; gCurrentPinballGame->unk132c->unk2C = gCurrentPinballGame->unk132c->unk28; gCurrentPinballGame->unk25 = 0; gCurrentPinballGame->unk5F7 = 0;