mirror of
https://github.com/pret/pokepinballrs.git
synced 2026-04-25 15:49:08 -05:00
starting checkpoint
This commit is contained in:
parent
f8a935cdd4
commit
29f8eb46ef
28
include/constants/ruby_states.h
Normal file
28
include/constants/ruby_states.h
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#ifndef GUARD_CONSTANTS_RUBY_STATES_H
|
||||
#define GUARD_CONSTANTS_RUBY_STATES_H
|
||||
|
||||
enum RubyPondStates{
|
||||
RUBY_POND_STATE_CHINCHOU_STAGGERED = 0,
|
||||
RUBY_POND_STATE_CHINCHOU_CLOCKWISE = 1,
|
||||
RUBY_POND_STATE_CHINCHOU_COUNTERCLOCKWISE = 2,
|
||||
RUBY_POND_STATE_CHINCHOU_ROWS = 3,
|
||||
RUBY_POND_STATE_LOTAD = 4,
|
||||
RUBY_POND_STATE_CHINCHOU_SINGLE_CLOCKWISE = 5,
|
||||
RUBY_POND_STATE_WHISCASH = 6
|
||||
};
|
||||
|
||||
enum WhiscashStates{
|
||||
WHISCASH_STATE_0 = 0,
|
||||
WHISCASH_STATE_1 = 1,
|
||||
WHISCASH_STATE_2 = 2,
|
||||
WHISCASH_STATE_3 = 3,
|
||||
WHISCASH_STATE_4 = 4,
|
||||
WHISCASH_STATE_5 = 5,
|
||||
WHISCASH_STATE_6 = 6,
|
||||
WHISCASH_STATE_7 = 7,
|
||||
WHISCASH_STATE_8 = 8,
|
||||
WHISCASH_STATE_9 = 9,
|
||||
WHISCASH_STATE_10 = 10,
|
||||
};
|
||||
|
||||
#endif // GUARD_CONSTANTS_RUBY_STATES_H
|
||||
|
|
@ -254,17 +254,17 @@ struct PinballGame
|
|||
/*0x166*/ u16 unk166;
|
||||
/*0x168*/ u16 unk168;
|
||||
/*0x16A*/ s16 unk16A;
|
||||
/*0x16C*/ s8 unk16C;
|
||||
/*0x16C*/ s8 rubyPondState;
|
||||
/*0x16D*/ u8 filler16D[0x1];
|
||||
/*0x16E*/ s8 unk16E;
|
||||
/*0x16F*/ s8 unk16F;
|
||||
/*0x16F*/ s8 rubyPondContentsChanging;
|
||||
/*0x170*/ s8 unk170[3];
|
||||
/*0x173*/ u8 unk173;
|
||||
/*0x174*/ u16 unk174;
|
||||
/*0x174*/ u16 rubyPondChangeTimer;
|
||||
/*0x176*/ u8 unk176;
|
||||
/*0x177*/ u8 filler177[0x1];
|
||||
/*0x178*/ struct Vector16 unk178[3];
|
||||
/*0x184*/ struct Vector16 unk184[3];
|
||||
/*0x178*/ struct Vector16 rubyBumperLogicPosition[3]; //chinchou or lotad
|
||||
/*0x184*/ struct Vector16 rubyBumperCollisionPosition[3]; //chinchou or lotad
|
||||
/*0x190*/ s16 unk190;
|
||||
/*0x192*/ u8 coins;
|
||||
/*0x193*/ s8 unk193;
|
||||
|
|
@ -381,9 +381,9 @@ struct PinballGame
|
|||
/*0x29E*/ u8 unk29E;
|
||||
/*0x29F*/ s8 unk29F;
|
||||
/*0x2A0*/ u16 unk2A0;
|
||||
/*0x2A2*/ s8 unk2A2;
|
||||
/*0x2A2*/ s8 whiscashState;
|
||||
/*0x2A3*/ s8 unk2A3;
|
||||
/*0x2A4*/ s8 unk2A4;
|
||||
/*0x2A4*/ s8 shouldProcessWhiscash;
|
||||
/*0x2A5*/ s8 unk2A5;
|
||||
/*0x2A6*/ u16 unk2A6;
|
||||
/*0x2A8*/ u16 unk2A8;
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ void RubyBoardProcess_0B_50918(void)
|
|||
gMain.spriteGroups[51].available = 1;
|
||||
gMain.spriteGroups[61].available = 1;
|
||||
gMain.spriteGroups[64].available = 1;
|
||||
if (gCurrentPinballGame->unk2A4 != 0)
|
||||
if (gCurrentPinballGame->shouldProcessWhiscash)
|
||||
gMain.spriteGroups[63].available = 1;
|
||||
else
|
||||
gMain.spriteGroups[62].available = 1;
|
||||
|
|
|
|||
|
|
@ -575,11 +575,11 @@ void sub_4E598(void)
|
|||
gCurrentPinballGame->unk70E = 1;
|
||||
if (gCurrentPinballGame->unk2A5 == 45)
|
||||
{
|
||||
gCurrentPinballGame->unk2A4 = 0;
|
||||
gCurrentPinballGame->shouldProcessWhiscash = 0;
|
||||
gCurrentPinballGame->unk2A5 = 0;
|
||||
gCurrentPinballGame->unk2A6 = 0;
|
||||
gCurrentPinballGame->unk16F = 1;
|
||||
gCurrentPinballGame->unk174 = 0x40;
|
||||
gCurrentPinballGame->rubyPondContentsChanging = 1;
|
||||
gCurrentPinballGame->rubyPondChangeTimer = 0x40;
|
||||
gCurrentPinballGame->unk2AA = 0;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
#include "main.h"
|
||||
#include "m4a.h"
|
||||
#include "constants/bg_music.h"
|
||||
#include "constants/ruby_states.h"
|
||||
|
||||
extern const void (*gUnknown_086AD4C4[])(void);
|
||||
extern const void (*gUnknown_086AD4E8[])(void);
|
||||
|
|
@ -50,7 +51,7 @@ void RubyBoardProcess_3A_19A20(void)
|
|||
gCurrentPinballGame->unk170[0] = 10;
|
||||
gCurrentPinballGame->unk170[1] = 10;
|
||||
gCurrentPinballGame->unk170[2] = 10;
|
||||
gCurrentPinballGame->unk16C = 0;
|
||||
gCurrentPinballGame->rubyPondState = RUBY_POND_STATE_CHINCHOU_STAGGERED;
|
||||
sub_1EC48();
|
||||
sub_1F158();
|
||||
|
||||
|
|
@ -246,7 +247,7 @@ void sub_19E10(void)
|
|||
if (gCurrentPinballGame->unk68 < 220)
|
||||
{
|
||||
sub_23E18();
|
||||
if (gCurrentPinballGame->unk2A4 != 0)
|
||||
if (gCurrentPinballGame->shouldProcessWhiscash)
|
||||
{
|
||||
sub_1DC7C();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
#include "m4a.h"
|
||||
#include "constants/bg_music.h"
|
||||
#include "constants/dusclops_states.h"
|
||||
#include "constants/ruby_states.h"
|
||||
|
||||
extern const u16 gUnknown_08254B10[];
|
||||
extern const u16 gUnknown_08257390[];
|
||||
|
|
@ -95,7 +96,7 @@ s16 COLLISION_CHECK_RUBY_14E08(struct Vector16 *arg0, u16* arg1) {
|
|||
|
||||
break;
|
||||
case 4:
|
||||
gCurrentPinballGame->unk2A2 = 2;
|
||||
gCurrentPinballGame->whiscashState = WHISCASH_STATE_2;
|
||||
gCurrentPinballGame->unk1F = 1;
|
||||
some_enum = 0;
|
||||
break;
|
||||
|
|
@ -123,13 +124,13 @@ void sub_15054(struct Vector16* arg0, u16* arg1, u8* arg2)
|
|||
if (gCurrentPinballGame->unk24 != 0)
|
||||
return;
|
||||
|
||||
if (gCurrentPinballGame->unk2A4 != 0)
|
||||
if (gCurrentPinballGame->shouldProcessWhiscash != 0)
|
||||
{
|
||||
if (gCurrentPinballGame->unk2A3 == 0)
|
||||
return;
|
||||
|
||||
deltaX = arg0->x + gCurrentPinballGame->unk184[0].x;
|
||||
deltaY = arg0->y + gCurrentPinballGame->unk184[0].y;
|
||||
deltaX = arg0->x + gCurrentPinballGame->rubyBumperCollisionPosition[0].x;
|
||||
deltaY = arg0->y + gCurrentPinballGame->rubyBumperCollisionPosition[0].y;
|
||||
|
||||
if (deltaX > 79U)
|
||||
return;
|
||||
|
|
@ -145,10 +146,10 @@ void sub_15054(struct Vector16* arg0, u16* arg1, u8* arg2)
|
|||
|
||||
*arg1 = maskedResult;
|
||||
|
||||
if (gCurrentPinballGame->unk2A2 <= 1)
|
||||
if (gCurrentPinballGame->whiscashState <= WHISCASH_STATE_1)
|
||||
{
|
||||
*arg2 = lowerNibble;
|
||||
gCurrentPinballGame->unk2A2 = 7;
|
||||
gCurrentPinballGame->whiscashState = WHISCASH_STATE_7;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -159,8 +160,8 @@ void sub_15054(struct Vector16* arg0, u16* arg1, u8* arg2)
|
|||
if (0xF & *arg2)
|
||||
return;
|
||||
|
||||
deltaX = arg0->x + (u16) gCurrentPinballGame->unk184[0].x;
|
||||
deltaY = arg0->y + (u16) gCurrentPinballGame->unk184[0].y;
|
||||
deltaX = arg0->x + (u16) gCurrentPinballGame->rubyBumperCollisionPosition[0].x;
|
||||
deltaY = arg0->y + (u16) gCurrentPinballGame->rubyBumperCollisionPosition[0].y;
|
||||
|
||||
if (deltaX <= 63U && deltaY <= 63U)
|
||||
{
|
||||
|
|
@ -173,8 +174,8 @@ void sub_15054(struct Vector16* arg0, u16* arg1, u8* arg2)
|
|||
|
||||
if (lowerNibble == 0)
|
||||
{
|
||||
deltaX = gCurrentPinballGame->unk184[1].x + arg0->x;
|
||||
deltaY = gCurrentPinballGame->unk184[1].y + arg0->y;
|
||||
deltaX = gCurrentPinballGame->rubyBumperCollisionPosition[1].x + arg0->x;
|
||||
deltaY = gCurrentPinballGame->rubyBumperCollisionPosition[1].y + arg0->y;
|
||||
|
||||
if (deltaX <= 63U && deltaY <= 63U)
|
||||
{
|
||||
|
|
@ -186,8 +187,8 @@ void sub_15054(struct Vector16* arg0, u16* arg1, u8* arg2)
|
|||
|
||||
if (lowerNibble == 0)
|
||||
{
|
||||
deltaX = gCurrentPinballGame->unk184[2].x + arg0->x;
|
||||
deltaY = gCurrentPinballGame->unk184[2].y + arg0->y;
|
||||
deltaX = gCurrentPinballGame->rubyBumperCollisionPosition[2].x + arg0->x;
|
||||
deltaY = gCurrentPinballGame->rubyBumperCollisionPosition[2].y + arg0->y;
|
||||
|
||||
if (deltaX <= 63U && deltaY <= 63U)
|
||||
{
|
||||
|
|
@ -205,7 +206,7 @@ void sub_15054(struct Vector16* arg0, u16* arg1, u8* arg2)
|
|||
}
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->unk16F == 0)
|
||||
if (gCurrentPinballGame->rubyPondContentsChanging == 0)
|
||||
gCurrentPinballGame->unk170[ix] = 107;
|
||||
|
||||
*arg1 = maskedResult;
|
||||
|
|
@ -337,8 +338,8 @@ void sub_153CC(s32 arg0, s16* arg1, u16* arg2)
|
|||
else if (gCurrentPinballGame->ball->positionQ0.x > 91)
|
||||
{
|
||||
gCurrentPinballGame->scoreAddedInFrame = 2000;
|
||||
gCurrentPinballGame->unk174 = 0;
|
||||
gCurrentPinballGame->unk16F = 1;
|
||||
gCurrentPinballGame->rubyPondChangeTimer = 0;
|
||||
gCurrentPinballGame->rubyPondContentsChanging = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -940,8 +941,8 @@ void sub_162B8(struct Vector16 *arg0, s16 *arg1, u8 *arg2) {
|
|||
if (gCurrentPinballGame->unk24 != 0)
|
||||
return;
|
||||
|
||||
deltaX = arg0->x + gCurrentPinballGame->unk184[0].x;
|
||||
deltaY = arg0->y + gCurrentPinballGame->unk184[0].y;
|
||||
deltaX = arg0->x + gCurrentPinballGame->rubyBumperCollisionPosition[0].x;
|
||||
deltaY = arg0->y + gCurrentPinballGame->rubyBumperCollisionPosition[0].y;
|
||||
|
||||
if (deltaX <= 63U && deltaY <= 63U)
|
||||
{
|
||||
|
|
@ -951,8 +952,8 @@ void sub_162B8(struct Vector16 *arg0, s16 *arg1, u8 *arg2) {
|
|||
}
|
||||
if (lowerNibble == 0)
|
||||
{
|
||||
deltaX = gCurrentPinballGame->unk184[1].x + arg0->x;
|
||||
deltaY = gCurrentPinballGame->unk184[1].y + arg0->y;
|
||||
deltaX = gCurrentPinballGame->rubyBumperCollisionPosition[1].x + arg0->x;
|
||||
deltaY = gCurrentPinballGame->rubyBumperCollisionPosition[1].y + arg0->y;
|
||||
|
||||
if (deltaX <= 63U && deltaY <= 63U)
|
||||
{
|
||||
|
|
@ -963,8 +964,8 @@ void sub_162B8(struct Vector16 *arg0, s16 *arg1, u8 *arg2) {
|
|||
|
||||
if (lowerNibble == 0)
|
||||
{
|
||||
deltaX = gCurrentPinballGame->unk184[2].x + arg0->x;
|
||||
deltaY = gCurrentPinballGame->unk184[2].y + arg0->y;
|
||||
deltaX = gCurrentPinballGame->rubyBumperCollisionPosition[2].x + arg0->x;
|
||||
deltaY = gCurrentPinballGame->rubyBumperCollisionPosition[2].y + arg0->y;
|
||||
|
||||
if (deltaX <= 63U && deltaY <= 63U)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include "m4a.h"
|
||||
#include "constants/ereader.h"
|
||||
#include "constants/fields.h"
|
||||
#include "constants/ruby_states.h"
|
||||
|
||||
extern struct PinballGame gUnknown_02000000;
|
||||
|
||||
|
|
@ -409,7 +410,7 @@ void sub_4A6A0(void)
|
|||
gCurrentPinballGame->ball->unk0 = 1;
|
||||
gCurrentPinballGame->unk1F = 1;
|
||||
gCurrentPinballGame->unk730 = 0;
|
||||
gCurrentPinballGame->unk2A2 = 5;
|
||||
gCurrentPinballGame->whiscashState = WHISCASH_STATE_5;
|
||||
gCurrentPinballGame->unk4C = 0;
|
||||
gCurrentPinballGame->unk4E = 118;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#include "main.h"
|
||||
#include "m4a.h"
|
||||
#include "constants/bg_music.h"
|
||||
#include "constants/ruby_states.h"
|
||||
|
||||
void sub_1AAA0(void);
|
||||
void sub_1AA38(void);
|
||||
|
|
@ -292,7 +293,7 @@ void sub_1ADF4(void)
|
|||
gCurrentPinballGame->unk28++;
|
||||
else
|
||||
{
|
||||
if (gCurrentPinballGame->scoreHi != 0 && gCurrentPinballGame->unk16C == 4)
|
||||
if (gCurrentPinballGame->scoreHi != 0 && gCurrentPinballGame->rubyPondState == RUBY_POND_STATE_LOTAD)
|
||||
sub_22978();
|
||||
else
|
||||
sub_22C6C();
|
||||
|
|
@ -300,7 +301,7 @@ void sub_1ADF4(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (gCurrentPinballGame->scoreHi != 0 && gCurrentPinballGame->unk16C == 4)
|
||||
if (gCurrentPinballGame->scoreHi != 0 && gCurrentPinballGame->rubyPondState == RUBY_POND_STATE_LOTAD)
|
||||
sub_22A30();
|
||||
else
|
||||
sub_22D54();
|
||||
|
|
|
|||
225
src/rom_201B8.c
225
src/rom_201B8.c
|
|
@ -2,6 +2,7 @@
|
|||
#include "m4a.h"
|
||||
#include "main.h"
|
||||
#include "constants/bg_music.h"
|
||||
#include "constants/ruby_states.h"
|
||||
|
||||
extern const u8 gUnknown_0847FD0C[][0x100];
|
||||
extern const s16 gUnknown_086ADEB0[][2];
|
||||
|
|
@ -588,8 +589,8 @@ void sub_1DC7C(void)
|
|||
var0 = var1[0];
|
||||
DmaCopy16(3, gUnknown_081379D8 + gCurrentPinballGame->unk6F * 0x60, (void *)0x05000320, 0x20);
|
||||
DmaCopy16(3, gUnknown_084B7FEC[var0], (void *)0x06014680, 0x460);
|
||||
gCurrentPinballGame->unk184[0].x = -248;
|
||||
gCurrentPinballGame->unk184[0].y = -316;
|
||||
gCurrentPinballGame->rubyBumperCollisionPosition[0].x = -248;
|
||||
gCurrentPinballGame->rubyBumperCollisionPosition[0].y = -316;
|
||||
group->baseX = var1[2] + 124u - gCurrentPinballGame->unk58;
|
||||
group->baseY = var1[3] + 150u - gCurrentPinballGame->unk5A;
|
||||
for (i = 0; i < 4; i++)
|
||||
|
|
@ -606,6 +607,7 @@ void sub_1DC7C(void)
|
|||
}
|
||||
}
|
||||
|
||||
//Ruby Pond + Whiscash
|
||||
void sub_1DDDC(void)
|
||||
{
|
||||
s16 i;
|
||||
|
|
@ -617,26 +619,29 @@ void sub_1DDDC(void)
|
|||
struct Vector32 tempVec2;
|
||||
int squaredMagnitude;
|
||||
|
||||
if (gCurrentPinballGame->unk2A4)
|
||||
// 2A4 = wishcash present
|
||||
if (gCurrentPinballGame->shouldProcessWhiscash)
|
||||
{
|
||||
// If board is currently in one of the modes (catch/etc) force reset to the 3 chinchou
|
||||
if (gCurrentPinballGame->unk13 > 2)
|
||||
gCurrentPinballGame->unk16F = 1;
|
||||
gCurrentPinballGame->rubyPondContentsChanging = 1;
|
||||
|
||||
if (gCurrentPinballGame->unk16F)
|
||||
// Don't immediately force change state if Wishcash is actively doing something
|
||||
if (gCurrentPinballGame->rubyPondContentsChanging)
|
||||
{
|
||||
if (gCurrentPinballGame->unk2A2 < 2)
|
||||
if (gCurrentPinballGame->whiscashState < WHISCASH_STATE_2)
|
||||
{
|
||||
gCurrentPinballGame->unk2A2 = 9;
|
||||
gCurrentPinballGame->whiscashState = WHISCASH_STATE_9;
|
||||
gCurrentPinballGame->unk2A5 = 8;
|
||||
gCurrentPinballGame->unk2A6 = 0;
|
||||
}
|
||||
|
||||
gCurrentPinballGame->unk16F = 0;
|
||||
gCurrentPinballGame->rubyPondContentsChanging = 0;
|
||||
}
|
||||
|
||||
switch (gCurrentPinballGame->unk2A2)
|
||||
switch (gCurrentPinballGame->whiscashState)
|
||||
{
|
||||
case 0:
|
||||
case WHISCASH_STATE_0:
|
||||
if (gUnknown_086AD862[gCurrentPinballGame->unk2A5][1] > gCurrentPinballGame->unk2A6)
|
||||
{
|
||||
gCurrentPinballGame->unk2A6++;
|
||||
|
|
@ -646,26 +651,26 @@ void sub_1DDDC(void)
|
|||
gCurrentPinballGame->unk2A6 = 0;
|
||||
gCurrentPinballGame->unk2A5++;
|
||||
if (gCurrentPinballGame->unk2A5 == 4)
|
||||
gCurrentPinballGame->unk2A2 = 1;
|
||||
gCurrentPinballGame->whiscashState = WHISCASH_STATE_1;
|
||||
|
||||
if (gCurrentPinballGame->unk2A5 == 2)
|
||||
m4aSongNumStart(SE_UNKNOWN_0xD3);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case WHISCASH_STATE_1:
|
||||
gCurrentPinballGame->unk2A5 = (gCurrentPinballGame->unk2A6 % 44) / 22 + 4;
|
||||
gCurrentPinballGame->unk2A6++;
|
||||
break;
|
||||
case 2:
|
||||
case WHISCASH_STATE_2:
|
||||
gCurrentPinballGame->unk2A5 = 6;
|
||||
gCurrentPinballGame->unk2A6 = 0;
|
||||
gCurrentPinballGame->unk2A2 = 3;
|
||||
gCurrentPinballGame->whiscashState = WHISCASH_STATE_3;
|
||||
gCurrentPinballGame->ball->oamPriority = 0;
|
||||
gCurrentPinballGame->scoreAddedInFrame = 5000;
|
||||
m4aSongNumStart(SE_UNKNOWN_0xD5);
|
||||
playRumbleType(7);
|
||||
break;
|
||||
case 3:
|
||||
case WHISCASH_STATE_3:
|
||||
if (gUnknown_086AD862[gCurrentPinballGame->unk2A5][1] > gCurrentPinballGame->unk2A6)
|
||||
{
|
||||
gCurrentPinballGame->unk2A6++;
|
||||
|
|
@ -678,7 +683,7 @@ void sub_1DDDC(void)
|
|||
{
|
||||
gCurrentPinballGame->unk2A5 = 12;
|
||||
gCurrentPinballGame->unk2A6 = 65;
|
||||
gCurrentPinballGame->unk2A2 = 4;
|
||||
gCurrentPinballGame->whiscashState = WHISCASH_STATE_4;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->unk2A5 == 9)
|
||||
|
|
@ -706,7 +711,7 @@ void sub_1DDDC(void)
|
|||
if (gCurrentPinballGame->unk2A5 == 8)
|
||||
gCurrentPinballGame->ball->unk0 = 1;
|
||||
break;
|
||||
case 4:
|
||||
case WHISCASH_STATE_4:
|
||||
gCurrentPinballGame->unk1100 = 1;
|
||||
if (gCurrentPinballGame->unk2A6 == 65)
|
||||
{
|
||||
|
|
@ -720,7 +725,7 @@ void sub_1DDDC(void)
|
|||
gMain.blendBrightness = 16 - gCurrentPinballGame->unk2A6 / 4;
|
||||
if (gCurrentPinballGame->unk2A6 == 0)
|
||||
{
|
||||
gCurrentPinballGame->unk284 = 7;
|
||||
gCurrentPinballGame->unk284 = FIELD_SPHEAL;
|
||||
gCurrentPinballGame->unk282 = 1;
|
||||
gCurrentPinballGame->unk73C = gCurrentPinballGame->unk72E;
|
||||
gCurrentPinballGame->catchModeArrows = gCurrentPinballGame->unk72F;
|
||||
|
|
@ -728,13 +733,13 @@ void sub_1DDDC(void)
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
case WHISCASH_STATE_5: //from board initialization
|
||||
gCurrentPinballGame->unk2A5 = 12;
|
||||
gCurrentPinballGame->unk2A6 = 0;
|
||||
gCurrentPinballGame->unk2A2 = 6;
|
||||
gCurrentPinballGame->whiscashState = WHISCASH_STATE_6;
|
||||
gCurrentPinballGame->ball->oamPriority = 0;
|
||||
break;
|
||||
case 6:
|
||||
case WHISCASH_STATE_6:
|
||||
if (gUnknown_086AD862[gCurrentPinballGame->unk2A5][1] > gCurrentPinballGame->unk2A6)
|
||||
{
|
||||
gCurrentPinballGame->unk2A6++;
|
||||
|
|
@ -746,7 +751,7 @@ void sub_1DDDC(void)
|
|||
if (gCurrentPinballGame->unk2A5 == 31)
|
||||
{
|
||||
gCurrentPinballGame->unk2A5 = 0;
|
||||
gCurrentPinballGame->unk2A2 = 10;
|
||||
gCurrentPinballGame->whiscashState = WHISCASH_STATE_10;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->unk2A5 == 21)
|
||||
|
|
@ -784,17 +789,17 @@ void sub_1DDDC(void)
|
|||
if (gCurrentPinballGame->unk2A5 == 22)
|
||||
gCurrentPinballGame->unk1F = 0;
|
||||
break;
|
||||
case 7:
|
||||
case WHISCASH_STATE_7:
|
||||
gCurrentPinballGame->unk2A5 = 31;
|
||||
gCurrentPinballGame->unk2A6 = 0;
|
||||
gCurrentPinballGame->unk2A2 = 8;
|
||||
gCurrentPinballGame->whiscashState = WHISCASH_STATE_8;
|
||||
gCurrentPinballGame->scoreAddedInFrame = 10;
|
||||
m4aSongNumStart(SE_UNKNOWN_0xB6);
|
||||
playRumbleType(7);
|
||||
if (gCurrentPinballGame->unk724)
|
||||
gCurrentPinballGame->unk724 = 1;
|
||||
break;
|
||||
case 8:
|
||||
case WHISCASH_STATE_8:
|
||||
if (gUnknown_086AD862[gCurrentPinballGame->unk2A5][1] > gCurrentPinballGame->unk2A6)
|
||||
{
|
||||
gCurrentPinballGame->unk2A6++;
|
||||
|
|
@ -806,16 +811,17 @@ void sub_1DDDC(void)
|
|||
if (gCurrentPinballGame->unk2A5 == 46)
|
||||
{
|
||||
gCurrentPinballGame->unk2A5 = 0;
|
||||
gCurrentPinballGame->unk2A2 = 10;
|
||||
gCurrentPinballGame->whiscashState = WHISCASH_STATE_10;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->unk2A5 == 42)
|
||||
m4aSongNumStart(SE_UNKNOWN_0xD4);
|
||||
|
||||
if (gCurrentPinballGame->unk2A5 == 33)
|
||||
m4aSongNumStart(SE_UNKNOWN_0x14C);
|
||||
m4aSongNumStart(SE_UNKNOWN_0x14C); //Wishcash angry
|
||||
}
|
||||
|
||||
// Heavy shaking starts
|
||||
if (gCurrentPinballGame->unk2A5 == 45)
|
||||
{
|
||||
gCurrentPinballGame->unk2AA = gUnknown_086AD9EC[gCurrentPinballGame->unk2A6 % 8];
|
||||
|
|
@ -826,7 +832,7 @@ void sub_1DDDC(void)
|
|||
playRumbleType(12);
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
case WHISCASH_STATE_9: //Early Exit (mode started)
|
||||
if (gUnknown_086AD862[gCurrentPinballGame->unk2A5][1] > gCurrentPinballGame->unk2A6)
|
||||
{
|
||||
gCurrentPinballGame->unk2A6++;
|
||||
|
|
@ -838,126 +844,126 @@ void sub_1DDDC(void)
|
|||
if (gCurrentPinballGame->unk2A5 == 13)
|
||||
{
|
||||
gCurrentPinballGame->unk2A5 = 0;
|
||||
gCurrentPinballGame->unk2A2 = 10;
|
||||
gCurrentPinballGame->whiscashState = WHISCASH_STATE_10;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->unk2A5 == 9)
|
||||
m4aSongNumStart(SE_UNKNOWN_0xD4);
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
gCurrentPinballGame->unk2A4 = 0;
|
||||
case WHISCASH_STATE_10: //cleanup
|
||||
gCurrentPinballGame->shouldProcessWhiscash = 0;
|
||||
gCurrentPinballGame->unk2A5 = 0;
|
||||
gCurrentPinballGame->unk2A6 = 0;
|
||||
gCurrentPinballGame->unk16F = 1;
|
||||
gCurrentPinballGame->unk174 = 64;
|
||||
gCurrentPinballGame->rubyPondContentsChanging = 1;
|
||||
gCurrentPinballGame->rubyPondChangeTimer = 64;
|
||||
gCurrentPinballGame->unk2AA = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gCurrentPinballGame->unk16F)
|
||||
if (gCurrentPinballGame->rubyPondContentsChanging)
|
||||
{
|
||||
if (gCurrentPinballGame->unk174 < 144)
|
||||
if (gCurrentPinballGame->rubyPondChangeTimer < 144)
|
||||
{
|
||||
gCurrentPinballGame->unk170[0] = gUnknown_08137968[gCurrentPinballGame->unk174 / 8];
|
||||
gCurrentPinballGame->unk170[0] = gUnknown_08137968[gCurrentPinballGame->rubyPondChangeTimer / 8];
|
||||
gCurrentPinballGame->unk170[1] = gCurrentPinballGame->unk170[0];
|
||||
gCurrentPinballGame->unk170[2] = gCurrentPinballGame->unk170[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
gCurrentPinballGame->unk16F = 0;
|
||||
gCurrentPinballGame->rubyPondContentsChanging = 0;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->unk170[0] == 10)
|
||||
{
|
||||
if (gCurrentPinballGame->unk174 % 8 == 0 && gCurrentPinballGame->unk174 / 8 == 8)
|
||||
if (gCurrentPinballGame->rubyPondChangeTimer % 8 == 0 && gCurrentPinballGame->rubyPondChangeTimer / 8 == 8)
|
||||
{
|
||||
gCurrentPinballGame->unk2A8++;
|
||||
if (gCurrentPinballGame->unk2A8 < 3 || gCurrentPinballGame->unk13 > 2)
|
||||
{
|
||||
var2 = (gMain.systemFrameCount % 5) + 1;
|
||||
if (gCurrentPinballGame->unk16C == var2)
|
||||
gCurrentPinballGame->unk16C = ((gMain.systemFrameCount + 1) % 5) + 1;
|
||||
if (gCurrentPinballGame->rubyPondState == var2)
|
||||
gCurrentPinballGame->rubyPondState = ((gMain.systemFrameCount + 1) % 5) + 1;
|
||||
else
|
||||
gCurrentPinballGame->unk16C = var2;
|
||||
gCurrentPinballGame->rubyPondState = var2;
|
||||
}
|
||||
else
|
||||
{
|
||||
var2 = (gMain.systemFrameCount % 6) + 1;
|
||||
if (gCurrentPinballGame->unk16C == var2)
|
||||
gCurrentPinballGame->unk16C = ((gMain.systemFrameCount + 1) % 6) + 1;
|
||||
if (gCurrentPinballGame->rubyPondState == var2)
|
||||
gCurrentPinballGame->rubyPondState = ((gMain.systemFrameCount + 1) % 6) + 1;
|
||||
else
|
||||
gCurrentPinballGame->unk16C = var2;
|
||||
gCurrentPinballGame->rubyPondState = var2;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->unk162)
|
||||
{
|
||||
gCurrentPinballGame->unk162 = 0;
|
||||
gCurrentPinballGame->unk16C = 6;
|
||||
gCurrentPinballGame->rubyPondState = RUBY_POND_STATE_WHISCASH;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->unk16C == 6)
|
||||
if (gCurrentPinballGame->rubyPondState == RUBY_POND_STATE_WHISCASH)
|
||||
{
|
||||
gCurrentPinballGame->unk2A4 = 1;
|
||||
gCurrentPinballGame->unk2A2 = 0;
|
||||
gCurrentPinballGame->shouldProcessWhiscash = 1;
|
||||
gCurrentPinballGame->whiscashState = WHISCASH_STATE_0;
|
||||
gCurrentPinballGame->unk2A6 = 0;
|
||||
gCurrentPinballGame->unk2A5 = 0;
|
||||
gCurrentPinballGame->unk16F = 0;
|
||||
gCurrentPinballGame->rubyPondContentsChanging = 0;
|
||||
gCurrentPinballGame->unk2A8 = 0;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->unk16C == 5)
|
||||
if (gCurrentPinballGame->rubyPondState == RUBY_POND_STATE_CHINCHOU_SINGLE_CLOCKWISE)
|
||||
{
|
||||
gCurrentPinballGame->unk178[0].x = gUnknown_086AD9DC[0].x * 10;
|
||||
gCurrentPinballGame->unk178[0].y = gUnknown_086AD9DC[0].y * 10;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[0].x = gUnknown_086AD9DC[0].x * 10;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[0].y = gUnknown_086AD9DC[0].y * 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gCurrentPinballGame->unk174++;
|
||||
if (gCurrentPinballGame->unk174 == 32)
|
||||
gCurrentPinballGame->rubyPondChangeTimer++;
|
||||
if (gCurrentPinballGame->rubyPondChangeTimer == 32)
|
||||
m4aSongNumStart(SE_UNKNOWN_0xC9);
|
||||
|
||||
switch (gCurrentPinballGame->unk16C)
|
||||
switch (gCurrentPinballGame->rubyPondState)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
if (gCurrentPinballGame->unk174 == 102)
|
||||
case RUBY_POND_STATE_CHINCHOU_STAGGERED:
|
||||
case RUBY_POND_STATE_CHINCHOU_CLOCKWISE:
|
||||
case RUBY_POND_STATE_CHINCHOU_COUNTERCLOCKWISE:
|
||||
case RUBY_POND_STATE_CHINCHOU_ROWS:
|
||||
if (gCurrentPinballGame->rubyPondChangeTimer == 102)
|
||||
m4aSongNumStart(SE_UNKNOWN_0xC8);
|
||||
if (gCurrentPinballGame->unk174 == 116)
|
||||
if (gCurrentPinballGame->rubyPondChangeTimer == 116)
|
||||
m4aSongNumStart(SE_UNKNOWN_0xC8);
|
||||
if (gCurrentPinballGame->unk174 == 130)
|
||||
if (gCurrentPinballGame->rubyPondChangeTimer == 130)
|
||||
m4aSongNumStart(SE_UNKNOWN_0xC8);
|
||||
break;
|
||||
case 4:
|
||||
if (gCurrentPinballGame->unk174 == 102)
|
||||
case RUBY_POND_STATE_LOTAD:
|
||||
if (gCurrentPinballGame->rubyPondChangeTimer == 102)
|
||||
m4aSongNumStart(SE_UNKNOWN_0xC8);
|
||||
if (gCurrentPinballGame->unk174 == 118)
|
||||
if (gCurrentPinballGame->rubyPondChangeTimer == 118)
|
||||
m4aSongNumStart(SE_UNKNOWN_0xC8);
|
||||
if (gCurrentPinballGame->unk174 == 134)
|
||||
if (gCurrentPinballGame->rubyPondChangeTimer == 134)
|
||||
m4aSongNumStart(SE_UNKNOWN_0xC8);
|
||||
break;
|
||||
case 5:
|
||||
if (gCurrentPinballGame->unk174 == 104)
|
||||
case RUBY_POND_STATE_CHINCHOU_SINGLE_CLOCKWISE:
|
||||
if (gCurrentPinballGame->rubyPondChangeTimer == 104)
|
||||
m4aSongNumStart(SE_UNKNOWN_0xC8);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (gCurrentPinballGame->unk16C)
|
||||
switch (gCurrentPinballGame->rubyPondState)
|
||||
{
|
||||
case 0:
|
||||
gCurrentPinballGame->unk178[0].x = 1250;
|
||||
gCurrentPinballGame->unk178[0].y = 1270;
|
||||
gCurrentPinballGame->unk178[2].x = 1600;
|
||||
gCurrentPinballGame->unk178[2].y = 1360;
|
||||
gCurrentPinballGame->unk178[1].x = 1370;
|
||||
gCurrentPinballGame->unk178[1].y = 1610;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[0].x = 1250;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[0].y = 1270;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[2].x = 1600;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[2].y = 1360;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[1].x = 1370;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[1].y = 1610;
|
||||
break;
|
||||
case 1:
|
||||
for (i = 0; i < 3; i++)
|
||||
|
|
@ -968,8 +974,8 @@ void sub_1DDDC(void)
|
|||
var1 = -var1;
|
||||
|
||||
gCurrentPinballGame->unk190 = 180;
|
||||
gCurrentPinballGame->unk178[i].x = (gCurrentPinballGame->unk190 * Cos(angle)) / 20000 + 1380;
|
||||
gCurrentPinballGame->unk178[i].y = (gCurrentPinballGame->unk190 * Sin(angle)) / 20000 + 1500;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[i].x = (gCurrentPinballGame->unk190 * Cos(angle)) / 20000 + 1380;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[i].y = (gCurrentPinballGame->unk190 * Sin(angle)) / 20000 + 1500;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
|
|
@ -981,8 +987,8 @@ void sub_1DDDC(void)
|
|||
var1 = -var1;
|
||||
|
||||
gCurrentPinballGame->unk190 = 180;
|
||||
gCurrentPinballGame->unk178[i].x = (gCurrentPinballGame->unk190 * Cos(angle)) / 20000 + 1380;
|
||||
gCurrentPinballGame->unk178[i].y = (gCurrentPinballGame->unk190 * Sin(angle)) / 20000 + 1500;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[i].x = (gCurrentPinballGame->unk190 * Cos(angle)) / 20000 + 1380;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[i].y = (gCurrentPinballGame->unk190 * Sin(angle)) / 20000 + 1500;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
|
|
@ -992,49 +998,49 @@ void sub_1DDDC(void)
|
|||
if (var1 < 0)
|
||||
var1 = -var1;
|
||||
|
||||
gCurrentPinballGame->unk178[i + 1].x = (i * 33 + 121) * 10;
|
||||
gCurrentPinballGame->unk178[i + 1].y = var1 * 5 + 1340;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[i + 1].x = (i * 33 + 121) * 10;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[i + 1].y = var1 * 5 + 1340;
|
||||
}
|
||||
|
||||
var1 = 23 - (gCurrentPinballGame->unk290 + 23) % 46;
|
||||
if (var1 < 0)
|
||||
var1 = 0-var1;
|
||||
|
||||
gCurrentPinballGame->unk178[0].x = 1370;
|
||||
gCurrentPinballGame->unk178[0].y = var1 * 5 + 1620;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[0].x = 1370;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[0].y = var1 * 5 + 1620;
|
||||
break;
|
||||
case 4:
|
||||
gCurrentPinballGame->unk178[0].x = 1210;
|
||||
gCurrentPinballGame->unk178[0].y = gUnknown_0813798C[(gCurrentPinballGame->unk290 % 60) / 10] + 1300;
|
||||
gCurrentPinballGame->unk178[1].x = 1600;
|
||||
gCurrentPinballGame->unk178[1].y = gUnknown_0813798C[((gCurrentPinballGame->unk290 + 20) % 60) / 10] + 1410;
|
||||
gCurrentPinballGame->unk178[2].x = 1370;
|
||||
gCurrentPinballGame->unk178[2].y = gUnknown_0813798C[((gCurrentPinballGame->unk290 + 40) % 60) / 10] + 1660;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[0].x = 1210;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[0].y = gUnknown_0813798C[(gCurrentPinballGame->unk290 % 60) / 10] + 1300;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[1].x = 1600;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[1].y = gUnknown_0813798C[((gCurrentPinballGame->unk290 + 20) % 60) / 10] + 1410;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[2].x = 1370;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[2].y = gUnknown_0813798C[((gCurrentPinballGame->unk290 + 40) % 60) / 10] + 1660;
|
||||
break;
|
||||
case 5:
|
||||
tempVec.x = gUnknown_086AD9DC[gCurrentPinballGame->unk16E].x * 10 - gCurrentPinballGame->unk178[0].x;
|
||||
tempVec.y = gUnknown_086AD9DC[gCurrentPinballGame->unk16E].y * 10 - gCurrentPinballGame->unk178[0].y;
|
||||
tempVec.x = gUnknown_086AD9DC[gCurrentPinballGame->unk16E].x * 10 - gCurrentPinballGame->rubyBumperLogicPosition[0].x;
|
||||
tempVec.y = gUnknown_086AD9DC[gCurrentPinballGame->unk16E].y * 10 - gCurrentPinballGame->rubyBumperLogicPosition[0].y;
|
||||
squaredMagnitude = (tempVec.x * tempVec.x) + (tempVec.y * tempVec.y);
|
||||
angle2 = ArcTan2(tempVec.x, -tempVec.y);
|
||||
tempVec2.x = (Cos(angle2) * 7) / 20000;
|
||||
tempVec2.y = (Sin(angle2) * -7) / 20000;
|
||||
gCurrentPinballGame->unk178[0].x += tempVec2.x;
|
||||
gCurrentPinballGame->unk178[0].y += tempVec2.y;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[0].x += tempVec2.x;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[0].y += tempVec2.y;
|
||||
if (squaredMagnitude < 2500)
|
||||
gCurrentPinballGame->unk16E = Random() % 4;
|
||||
|
||||
gCurrentPinballGame->unk178[1].x = 0;
|
||||
gCurrentPinballGame->unk178[1].y = -300;
|
||||
gCurrentPinballGame->unk178[2].x = 0;
|
||||
gCurrentPinballGame->unk178[2].y = -300;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[1].x = 0;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[1].y = -300;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[2].x = 0;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[2].y = -300;
|
||||
break;
|
||||
case 6:
|
||||
gCurrentPinballGame->unk178[0].x = 0;
|
||||
gCurrentPinballGame->unk178[0].y = -300;
|
||||
gCurrentPinballGame->unk178[1].x = 0;
|
||||
gCurrentPinballGame->unk178[1].y = -300;
|
||||
gCurrentPinballGame->unk178[2].x = 0;
|
||||
gCurrentPinballGame->unk178[2].y = -300;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[0].x = 0;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[0].y = -300;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[1].x = 0;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[1].y = -300;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[2].x = 0;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[2].y = -300;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -1067,7 +1073,7 @@ void sub_1EC48(void)
|
|||
{
|
||||
if (gCurrentPinballGame->unk6C6 == 0)
|
||||
{
|
||||
if (gCurrentPinballGame->unk16C == 4)
|
||||
if (gCurrentPinballGame->rubyPondState == RUBY_POND_STATE_LOTAD)
|
||||
{
|
||||
gMain.modeChangeFlags |= MODE_CHANGE_BANNER;
|
||||
gCurrentPinballGame->unkEA = 50;
|
||||
|
|
@ -1117,7 +1123,7 @@ void sub_1EC48(void)
|
|||
}
|
||||
|
||||
group = &gMain.spriteGroups[62];
|
||||
if (gCurrentPinballGame->unk16C == 4)
|
||||
if (gCurrentPinballGame->rubyPondState == RUBY_POND_STATE_LOTAD)
|
||||
{
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
|
|
@ -1177,13 +1183,14 @@ void sub_1EC48(void)
|
|||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
group->baseX = gCurrentPinballGame->unk178[i].x / 10 - gCurrentPinballGame->unk58 - 8;
|
||||
group->baseY = gCurrentPinballGame->unk178[i].y / 10 - gCurrentPinballGame->unk5A - 4;
|
||||
gCurrentPinballGame->unk184[i].x = (-(gCurrentPinballGame->unk178[i].x / 10) + 8) * 2;
|
||||
gCurrentPinballGame->unk184[i].y = (-(gCurrentPinballGame->unk178[i].y / 10) + 7) * 2;
|
||||
group->baseX = gCurrentPinballGame->rubyBumperLogicPosition[i].x / 10 - gCurrentPinballGame->unk58 - 8;
|
||||
group->baseY = gCurrentPinballGame->rubyBumperLogicPosition[i].y / 10 - gCurrentPinballGame->unk5A - 4;
|
||||
gCurrentPinballGame->rubyBumperCollisionPosition[i].x = (-(gCurrentPinballGame->rubyBumperLogicPosition[i].x / 10) + 8) * 2;
|
||||
gCurrentPinballGame->rubyBumperCollisionPosition[i].y = (-(gCurrentPinballGame->rubyBumperLogicPosition[i].y / 10) + 7) * 2;
|
||||
if (group->baseY < -40)
|
||||
group->baseY = -40;
|
||||
|
||||
//sprites have a left/right half.
|
||||
for (j = 0; j < 2; j++)
|
||||
{
|
||||
oamSimple = &group->oam[j + i * 2];
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#include "m4a.h"
|
||||
#include "main.h"
|
||||
#include "constants/bg_music.h"
|
||||
#include "constants/ruby_states.h"
|
||||
|
||||
#define BONUS_CATCH_TIME 7200 //2 minutes, 60FPS
|
||||
|
||||
|
|
@ -2556,7 +2557,7 @@ void sub_260B8(void)
|
|||
gCurrentPinballGame->unk170[1] = 0;
|
||||
gCurrentPinballGame->unk170[2] = 0;
|
||||
}
|
||||
gCurrentPinballGame->unk174 = 0;
|
||||
gCurrentPinballGame->rubyPondChangeTimer = 0;
|
||||
break;
|
||||
case 2:
|
||||
if (gCurrentPinballGame->unk5FC == 0)
|
||||
|
|
@ -2567,16 +2568,16 @@ void sub_260B8(void)
|
|||
|
||||
if (gMain.selectedField == FIELD_RUBY)
|
||||
{
|
||||
if (gCurrentPinballGame->unk174 < 143)
|
||||
gCurrentPinballGame->unk170[0] = gUnknown_08137944[gCurrentPinballGame->unk174 / 8];
|
||||
if (gCurrentPinballGame->rubyPondChangeTimer < 143)
|
||||
gCurrentPinballGame->unk170[0] = gUnknown_08137944[gCurrentPinballGame->rubyPondChangeTimer / 8];
|
||||
|
||||
if (gCurrentPinballGame->unk174 >= 18 && gCurrentPinballGame->unk174 < 161)
|
||||
gCurrentPinballGame->unk170[2] = gUnknown_08137944[(gCurrentPinballGame->unk174 - 18) / 8];
|
||||
if (gCurrentPinballGame->rubyPondChangeTimer >= 18 && gCurrentPinballGame->rubyPondChangeTimer < 161)
|
||||
gCurrentPinballGame->unk170[2] = gUnknown_08137944[(gCurrentPinballGame->rubyPondChangeTimer - 18) / 8];
|
||||
|
||||
if (gCurrentPinballGame->unk174 >= 36 && gCurrentPinballGame->unk174 < 179)
|
||||
gCurrentPinballGame->unk170[1] = gUnknown_08137944[(gCurrentPinballGame->unk174 - 36) / 8];
|
||||
if (gCurrentPinballGame->rubyPondChangeTimer >= 36 && gCurrentPinballGame->rubyPondChangeTimer < 179)
|
||||
gCurrentPinballGame->unk170[1] = gUnknown_08137944[(gCurrentPinballGame->rubyPondChangeTimer - 36) / 8];
|
||||
|
||||
gCurrentPinballGame->unk174++;
|
||||
gCurrentPinballGame->rubyPondChangeTimer++;
|
||||
}
|
||||
|
||||
gCurrentPinballGame->unk6E0 = (gCurrentPinballGame->unk6F0 * 32) / gCurrentPinballGame->unk6F2;
|
||||
|
|
@ -2620,7 +2621,7 @@ void sub_260B8(void)
|
|||
gCurrentPinballGame->unk163 = 1;
|
||||
gCurrentPinballGame->unk21 = 1;
|
||||
gCurrentPinballGame->unk724 = 3600;
|
||||
gCurrentPinballGame->unk16C = 2;
|
||||
gCurrentPinballGame->rubyPondState = RUBY_POND_STATE_CHINCHOU_COUNTERCLOCKWISE;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1417,10 +1417,10 @@ void sub_2A354(void)
|
|||
}
|
||||
break;
|
||||
case 22:
|
||||
if (gCurrentPinballGame->unk6DE == 150 && gCurrentPinballGame->unk2A4 == 0)
|
||||
if (gCurrentPinballGame->unk6DE == 150 && gCurrentPinballGame->shouldProcessWhiscash == 0)
|
||||
{
|
||||
gCurrentPinballGame->unk174 = 0;
|
||||
gCurrentPinballGame->unk16F = 1;
|
||||
gCurrentPinballGame->rubyPondChangeTimer = 0;
|
||||
gCurrentPinballGame->rubyPondContentsChanging = 1;
|
||||
gCurrentPinballGame->unk162 = 1;
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -895,6 +895,7 @@ void sub_2E67C(void)
|
|||
}
|
||||
}
|
||||
|
||||
//Sapphire pond - Pelliper
|
||||
void sub_2E6AC(void)
|
||||
{
|
||||
s16 i;
|
||||
|
|
@ -1679,12 +1680,12 @@ void sub_2FCD0(void)
|
|||
|
||||
void sub_300D8(void)
|
||||
{
|
||||
gCurrentPinballGame->unk178[0].x = 920;
|
||||
gCurrentPinballGame->unk178[0].y = (133 - (gCurrentPinballGame->unk290 % 60) / 30) * 10;
|
||||
gCurrentPinballGame->unk178[1].x = 1260;
|
||||
gCurrentPinballGame->unk178[1].y = (131 - ((gCurrentPinballGame->unk290 + 10) % 60) / 30) * 10;
|
||||
gCurrentPinballGame->unk178[2].x = 1080;
|
||||
gCurrentPinballGame->unk178[2].y = (161 - ((gCurrentPinballGame->unk290 + 20) % 60) / 30) * 10;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[0].x = 920;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[0].y = (133 - (gCurrentPinballGame->unk290 % 60) / 30) * 10;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[1].x = 1260;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[1].y = (131 - ((gCurrentPinballGame->unk290 + 10) % 60) / 30) * 10;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[2].x = 1080;
|
||||
gCurrentPinballGame->rubyBumperLogicPosition[2].y = (161 - ((gCurrentPinballGame->unk290 + 20) % 60) / 30) * 10;
|
||||
}
|
||||
|
||||
void sub_30178(void)
|
||||
|
|
@ -1766,10 +1767,10 @@ void sub_30178(void)
|
|||
|
||||
DmaCopy16(3, &gUnknown_0845690C[index], (void *)0x060133A0 + i * 0x200, 0x200);
|
||||
|
||||
group->baseX = gCurrentPinballGame->unk178[i].x / 10 - gCurrentPinballGame->unk58 - 8;
|
||||
group->baseY = gCurrentPinballGame->unk178[i].y / 10 - gCurrentPinballGame->unk5A - 10;
|
||||
gCurrentPinballGame->unk184[i].x = (-(gCurrentPinballGame->unk178[i].x / 10) + 8) * 2;
|
||||
gCurrentPinballGame->unk184[i].y = (-(gCurrentPinballGame->unk178[i].y / 10) + 3) * 2;
|
||||
group->baseX = gCurrentPinballGame->rubyBumperLogicPosition[i].x / 10 - gCurrentPinballGame->unk58 - 8;
|
||||
group->baseY = gCurrentPinballGame->rubyBumperLogicPosition[i].y / 10 - gCurrentPinballGame->unk5A - 10;
|
||||
gCurrentPinballGame->rubyBumperCollisionPosition[i].x = (-(gCurrentPinballGame->rubyBumperLogicPosition[i].x / 10) + 8) * 2;
|
||||
gCurrentPinballGame->rubyBumperCollisionPosition[i].y = (-(gCurrentPinballGame->rubyBumperLogicPosition[i].y / 10) + 3) * 2;
|
||||
|
||||
oamSimple = &group->oam[i];
|
||||
gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user