Merge pull request #460 from gamemasterplc/pal

Port early board TUs to PAL
This commit is contained in:
Liam Coleman 2024-11-16 09:50:58 -06:00 committed by GitHub
commit 8cbbbb8dd8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 1660 additions and 1309 deletions

View file

@ -3611,8 +3611,8 @@ pickSpr = .rodata:0x8011DFD0; // type:object size:0x20 scope:local
handMdl = .rodata:0x8011DFF0; // type:object size:0x20 scope:local
ticketSpr = .rodata:0x8011E010; // type:object size:0x10 scope:local
lbl_8011E020 = .rodata:0x8011E020; // type:object size:0x20 data:4byte
lbl_8011E040 = .rodata:0x8011E040; // type:object size:0x24
lbl_8011E064 = .rodata:0x8011E064; // type:object size:0x4C
starMesTbl1 = .rodata:0x8011E040; // type:object size:0x24 scope:local
starMesTbl2 = .rodata:0x8011E064; // type:object size:0x48 scope:local
lbl_8011E0B0 = .rodata:0x8011E0B0; // type:object size:0x10 data:4byte
lbl_8011E0C0 = .rodata:0x8011E0C0; // type:object size:0x54 data:4byte
lbl_8011E118 = .rodata:0x8011E118; // type:object size:0x38 data:4byte
@ -5005,7 +5005,7 @@ itemPickupMdlId = .sdata:0x801D3790; // type:object size:0x2 scope:local data:2b
yourTurnSprGrp = .sdata:0x801D3792; // type:object size:0x2 scope:local data:2byte
jumpMot = .sdata:0x801D3798; // type:object size:0x2 scope:local data:2byte
starMdl = .sdata:0x801D379A; // type:object size:0x2 scope:local data:2byte
lbl_801D37A0 = .sdata:0x801D37A0; // type:object size:0x8
itemMotTbl = .sdata:0x801D37A0; // type:object size:0x8 scope:local
lbl_801D37A8 = .sdata:0x801D37A8; // type:object size:0x8
jumpMot = .sdata:0x801D37B0; // type:object size:0x2 scope:local data:2byte
scareMot = .sdata:0x801D37B2; // type:object size:0x2 scope:local data:2byte

View file

@ -5,7 +5,7 @@ symbols: config/GMPP01_00/symbols.txt
splits: config/GMPP01_00/splits.txt
quick_analysis: false # Faster re-runs after initial analysis
mw_comment_version: 10 # GC 2.6 linker
force_active: [__register_global_object]
force_active: [__register_global_object, lbl_801D40D0]
detect_objects: true
detect_strings: true

View file

@ -315,3 +315,180 @@ game/sreset.c:
.bss start:0x801B97E0 end:0x801BAB80
.sdata start:0x801F0A00 end:0x801F0A18
.sbss start:0x801F1270 end:0x801F1288
game/board/main.c:
.text start:0x8005AEF0 end:0x80061D78
.rodata start:0x8011DB80 end:0x8011DBB0
.data start:0x80156B20 end:0x80156C20
.bss start:0x801BAB80 end:0x801BAD08
.sdata start:0x801F0A18 end:0x801F0A28
.sbss start:0x801F1288 end:0x801F12D8
.sdata2 start:0x801F2508 end:0x801F25B8
game/board/player.c:
.text start:0x80061D78 end:0x8006D0BC
.rodata start:0x8011DBB0 end:0x8011DC80
.data start:0x80156C20 end:0x80156E28
.bss start:0x801BAD08 end:0x801BAD38
.sdata start:0x801F0A28 end:0x801F0A88
.sbss start:0x801F12D8 end:0x801F1310
.sdata2 start:0x801F25B8 end:0x801F26C0
game/board/model.c:
.text start:0x8006D0BC end:0x8006FB30
.sbss start:0x801F1310 end:0x801F1320
.sdata2 start:0x801F26C0 end:0x801F26D8
game/board/window.c:
.text start:0x8006FB30 end:0x80070B30
.rodata start:0x8011DC80 end:0x8011DCF0
.data start:0x80156E28 end:0x80156E70
.bss start:0x801BAD38 end:0x801BAD98
.sdata start:0x801F0A88 end:0x801F0A90
.sbss start:0x801F1320 end:0x801F1348
.sdata2 start:0x801F26D8 end:0x801F26E8
game/board/audio.c:
.text start:0x80070B30 end:0x8007103C
.data start:0x80156E70 end:0x80156E88
.sdata start:0x801F0A90 end:0x801F0A98
.sbss start:0x801F1348 end:0x801F1350
game/board/com.c:
.text start:0x8007103C end:0x80072750
.data start:0x80156E88 end:0x80156F50
.sdata start:0x801F0A98 end:0x801F0AA0
.sdata2 start:0x801F26E8 end:0x801F2710
game/board/view.c:
.text start:0x80072750 end:0x80073DD0
.rodata start:0x8011DCF0 end:0x8011DD10
.data start:0x80156F50 end:0x80157050
.bss start:0x801BAD98 end:0x801BADB0
.sdata start:0x801F0AA0 end:0x801F0AA8
.sbss start:0x801F1350 end:0x801F1368
.sdata2 start:0x801F2710 end:0x801F2780
game/board/space.c:
.text start:0x80073DD0 end:0x80077888
.data start:0x80157050 end:0x80157090
.bss start:0x801BADB0 end:0x801C1E00
.sdata start:0x801F0AA8 end:0x801F0AB0
.sbss start:0x801F1368 end:0x801F13A0
.sdata2 start:0x801F2780 end:0x801F2800
game/board/shop.c:
.text start:0x80077888 end:0x8007A6B4
.data start:0x80157090 end:0x80157210
.bss start:0x801C1E00 end:0x801C1E30
.sdata start:0x801F0AB0 end:0x801F0AD0
.sbss start:0x801F13A0 end:0x801F13C0
.sdata2 start:0x801F2800 end:0x801F28D8
game/board/lottery.c:
.text start:0x8007A6B4 end:0x8007F9C8
.rodata start:0x8011DD10 end:0x8011DE40
.data start:0x80157210 end:0x80157578
.bss start:0x801C1E30 end:0x801C1E60
.sdata start:0x801F0AD0 end:0x801F0AF0
.sbss start:0x801F13C0 end:0x801F13E0
.sdata2 start:0x801F28D8 end:0x801F2A68
game/board/basic_space.c:
.text start:0x8007F9C8 end:0x80080BCC
.data start:0x80157578 end:0x801575B0
.sdata2 start:0x801F2A68 end:0x801F2AF8
game/board/warp.c:
.text start:0x80080BCC end:0x80081544
.rodata start:0x8011DE40 end:0x8011DE60
.data start:0x801575B0 end:0x801575D0
.bss start:0x801C1E60 end:0x801C1E70
.sdata start:0x801F0AF0 end:0x801F0B00
.sbss start:0x801F13E0 end:0x801F13F8
.sdata2 start:0x801F2AF8 end:0x801F2B48
game/board/char_wheel.c:
.text start:0x80081544 end:0x80082B3C
.data start:0x801575D0 end:0x80157638
.sdata start:0x801F0B00 end:0x801F0B08
.sbss start:0x801F13F8 end:0x801F1418
.sdata2 start:0x801F2B48 end:0x801F2BD8
game/board/mushroom.c:
.text start:0x80082B3C end:0x80083D88
.sdata start:0x801F0B08 end:0x801F0B18
.sbss start:0x801F1418 end:0x801F1428
.sdata2 start:0x801F2BD8 end:0x801F2C60
game/board/star.c:
.text start:0x80083D88 end:0x80085B74
.rodata start:0x8011DE60 end:0x8011DED0
.data start:0x80157638 end:0x801576F0
.bss start:0x801C1E70 end:0x801C1E80
.sdata start:0x801F0B18 end:0x801F0B20
.sbss start:0x801F1428 end:0x801F1440
.sdata2 start:0x801F2C60 end:0x801F2D00
game/board/roll.c:
.text start:0x80085B74 end:0x800882B4
.rodata start:0x8011DED0 end:0x8011DF38
.data start:0x801576F0 end:0x80157790
.bss start:0x801C1E80 end:0x801C1E90
.sdata start:0x801F0B20 end:0x801F0B38
.sbss start:0x801F1440 end:0x801F1460
.sdata2 start:0x801F2D00 end:0x801F2DB0
game/board/ui.c:
.text start:0x800882B4 end:0x8008DE88
.rodata start:0x8011DF38 end:0x8011E020
.data start:0x80157790 end:0x80157990
.bss start:0x801C1E90 end:0x801C1F20
.sdata start:0x801F0B38 end:0x801F0B40
.sbss start:0x801F1460 end:0x801F1498
.sdata2 start:0x801F2DB0 end:0x801F2E70
game/board/block.c:
.text start:0x8008DE88 end:0x8008ED48
.rodata start:0x8011E020 end:0x8011E040
.data start:0x80157990 end:0x801579A8
.bss start:0x801C1F20 end:0x801C1F48
.sdata start:0x801F0B40 end:0x801F0B48
.sbss start:0x801F1498 end:0x801F14B0
.sdata2 start:0x801F2E70 end:0x801F2EC8
game/board/item.c:
.text start:0x8008ED48 end:0x800974CC
.rodata start:0x8011E040 end:0x8011E058
.data start:0x801579A8 end:0x80157D98
.bss start:0x801C1F48 end:0x801C1F88
.sdata start:0x801F0B48 end:0x801F0B58
.sbss start:0x801F14B0 end:0x801F14F0
.sdata2 start:0x801F2EC8 end:0x801F3100
game/board/bowser.c:
.text start:0x800974CC end:0x8009B3F4
.rodata start:0x8011E058 end:0x8011E120
.data start:0x80157D98 end:0x80157DE8
.bss start:0x801C1F88 end:0x801C1FD0
.sdata start:0x801F0B58 end:0x801F0B70
.sbss start:0x801F14F0 end:0x801F1530
.sdata2 start:0x801F3100 end:0x801F31B0
game/board/battle.c:
.text start:0x8009B3F4 end:0x8009D068
.rodata start:0x8011E120 end:0x8011E1A0
.data start:0x80157DE8 end:0x80157E98
.bss start:0x801C1FD0 end:0x801C1FE0
.sdata start:0x801F0B70 end:0x801F0B78
.sbss start:0x801F1530 end:0x801F1558
.sdata2 start:0x801F31B0 end:0x801F3258
game/board/fortune.c:
.text start:0x8009D068 end:0x8009DEF0
.rodata start:0x8011E1A0 end:0x8011E1C8
.data start:0x80157E98 end:0x80157EB0
.bss start:0x801C1FE0 end:0x801C1FF8
.sdata start:0x801F0B78 end:0x801F0B80
.sbss start:0x801F1558 end:0x801F1568
.sdata2 start:0x801F3258 end:0x801F3268

File diff suppressed because it is too large Load diff

View file

@ -5,7 +5,7 @@ symbols: config/GMPP01_00/symbols.txt
splits: config/GMPP01_00/splits.txt
quick_analysis: false # Faster re-runs after initial analysis
mw_comment_version: 10 # GC 2.6 linker
force_active: [__register_global_object]
force_active: [__register_global_object, lbl_801D40D0]
detect_objects: true
detect_strings: true

View file

@ -422,28 +422,28 @@ config.libs = [
Object(Matching, "game/flag.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/saveload.c"),
Object(Matching, "game/sreset.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/main.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/player.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/model.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/window.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/audio.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/com.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/view.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/space.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/shop.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/lottery.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/basic_space.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/warp.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/char_wheel.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/mushroom.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/star.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/roll.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/ui.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/block.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/item.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/bowser.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/battle.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/fortune.c"),
Object(Matching, "game/board/main.c"),
Object(Matching, "game/board/player.c"),
Object(Matching, "game/board/model.c"),
Object(Matching, "game/board/window.c"),
Object(Matching, "game/board/audio.c"),
Object(Matching, "game/board/com.c"),
Object(Matching, "game/board/view.c"),
Object(Matching, "game/board/space.c"),
Object(Matching, "game/board/shop.c"),
Object(Matching, "game/board/lottery.c"),
Object(Matching, "game/board/basic_space.c"),
Object(Matching, "game/board/warp.c"),
Object(Matching, "game/board/char_wheel.c"),
Object(Matching, "game/board/mushroom.c"),
Object(Matching, "game/board/star.c"),
Object(Matching, "game/board/roll.c"),
Object(Matching, "game/board/ui.c"),
Object(Matching, "game/board/block.c"),
Object(Matching, "game/board/item.c"),
Object(Matching, "game/board/bowser.c"),
Object(Matching, "game/board/battle.c"),
Object(Matching, "game/board/fortune.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/boo.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/mg_setup.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/board/boo_house.c"),

View file

@ -31,5 +31,6 @@ s32 BoardWinPortraitGetStar(void);
void BoardWinPlayerSet(s32 player);
void BoardWinStartComKeySet(void);
void BoardWinComKeyFuncSet(BoardWinComKeyFunc func);
s16 BoardWinIDGet(void);
#endif

View file

@ -3,6 +3,7 @@
#include "dolphin.h"
#include "game/flag.h"
#include "version.h"
//HACK: to prevent prototype errors
extern void HuPadRumbleAllStop(void);
@ -235,6 +236,7 @@ static inline s32 GWMessSpeedGet(void)
static inline void GWMessSpeedSet(s32 value)
{
#if VERSION_NTSC
GWSystem.mess_speed = value;
switch(value) {
case 0:
@ -249,6 +251,26 @@ static inline void GWMessSpeedSet(s32 value)
GWSystem.mess_delay = 32;
break;
}
#else
GWSystem.mess_speed = value;
switch(value) {
case 0:
GWSystem.mess_delay = 32;
break;
case 2:
GWSystem.mess_delay = 64;
break;
case 1:
GWSystem.mess_delay = 48;
break;
default:
GWSystem.mess_delay = 120;
break;
}
#endif
}
static inline void GWSaveModeSet(s32 value)

View file

@ -132,6 +132,12 @@ static void ExecCharWheel(omObjData *arg0) {
temp_r31 = OM_GET_WORK_PTR(arg0, CharWheelWork);;
if (temp_r31->unk00_field0 != 0 || BoardIsKill()) {
KillCharWheelSpr();
#if VERSION_PAL
if (wheelFXStat != -1) {
HuAudFXStop(wheelFXStat);
wheelFXStat = -1;
}
#endif
charWheelObj = NULL;
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
@ -322,7 +328,13 @@ static void UpdateCharWheel(CharWheelWork *arg0) {
}
var_f23 = 8191.0f - 8191.0f * (var_f25 / wheelSpeed);
OSf32tos16(&var_f23, &var_r17);
#if VERSION_PAL
if(wheelFXStat != -1) {
HuAudFXPitchSet(wheelFXStat, -var_r17);
}
#else
HuAudFXPitchSet(wheelFXStat, -var_r17);
#endif
if (var_f25 > -0.0000001f && var_f25 < 0.0000001f) {
arg0->unk00_field3 = 3;
if (wheelFXStat != -1) {
@ -379,7 +391,14 @@ static void GrowCharWheel(CharWheelWork *arg0) {
}
arg0->unk02 = 90;
arg0->unk00_field3 = 2;
#if VERSION_PAL
if(!BoardIsKill()) {
wheelFXStat = HuAudFXPlay(0x30A);
}
#else
wheelFXStat = HuAudFXPlay(0x30A);
#endif
}
OSs8tof32(&arg0->unk02, &temp_f30);
HuSprGrpScaleSet(wheelSprGrp, sind(temp_f30), sind(temp_f30));

View file

@ -112,7 +112,7 @@ static AnimData *genieParticleAnim;
static s16 geniePlayerMot[3];
static Process *itemProc;
s32 lbl_801D37A0[2] = { DATA_MAKE_NUM(DATADIR_BOARD, 117), -1 };
static s32 itemMotTbl[2] = { DATA_MAKE_NUM(DATADIR_BOARD, 117), -1 };
static void (*itemFuncTbl[])(void) = { ExecItemMini, ExecItemMega, ExecItemMiniSuper, ExecItemMegaSuper, ExecItemHammer, ExecItemPipe, ExecItemSwap,
ExecItemSpark, ExecItemLight, ExecItemWhistle, ExecItemBowser, ExecItemBooBall, ExecItemGenie, ExecItemBag };
@ -1183,7 +1183,7 @@ static void ExecItemSpark(void)
BoardModelLayerSet(temp_r30, 3);
BoardModelVisibilitySet(temp_r30, 0);
HuAudFXPlay(0x350);
suitMdl = BoardModelCreate(itemMdlTbl[currItem], lbl_801D37A0, 0);
suitMdl = BoardModelCreate(itemMdlTbl[currItem], itemMotTbl, 0);
BoardModelLayerSet(suitMdl, 2);
ItemShowProc(NULL, NULL);
temp_r28 = GWPlayer[currItemRestore].space_curr;

View file

@ -403,8 +403,11 @@ static void MainFunc(void)
if(_CheckFlag(FLAG_ID_MAKE(1, 11))) {
BoardTutorialWorkSave();
BoardTutorialPlayerInit();
GWSystem.mess_speed = 1;
GWSystem.mess_delay = 32;
#if VERSION_PAL
GWMessSpeedSet(3);
#else
GWMessSpeedSet(1);
#endif
}
CreateBoard();
if(!_CheckFlag(FLAG_ID_MAKE(1, 1))) {

View file

@ -139,6 +139,71 @@ s32 BoardRollExec(s32 arg0)
return destMode;
}
static void RollWinCreate(s32 playerNo)
{
float sp8[2];
float posX;
float posY;
s32 var_r29;
s32 var_r27;
s32 temp_r25;
if (!_CheckFlag(FLAG_ID_MAKE(1, 11))) {
var_r27 = BoardPlayerItemCount(playerNo);
if (GWTeamGet()) {
temp_r25 = BoardPlayerSameTeamFind(playerNo);
var_r27 += BoardPlayerItemCount(temp_r25);
}
if (BoardItemPrevGet() != -1 || var_r27 == 0 || _CheckFlag(FLAG_ID_MAKE(1, 9)) || BoardMegaDoubleDiceCheck()) {
var_r29 = MAKE_MESSID(0x09, 0x04);
}
else {
var_r29 = MAKE_MESSID(0x09, 0x02);
}
if (inputTimer != 0) {
var_r29 = MAKE_MESSID(0x30, 0x25);
}
HuWinMesMaxSizeGet(1, sp8, var_r29);
#if VERSION_PAL
posY = HU_DISP_HEIGHT - 176;
switch (GWGameStat.language) {
case 0:
case 4:
posX = -10000.0f;
break;
case 3:
posX = HU_DISP_CENTERX - (sp8[0] / 2 - 32.0f);
break;
case 5:
posX = HU_DISP_CENTERX - (sp8[0] / 2 - 16.0f);
posY = 258;
break;
default:
posX = HU_DISP_CENTERX - (sp8[0] / 2 - 16.0f);
break;
}
#else
switch (GWGameStat.language) {
case 0:
posX = -10000.0f;
break;
case 1:
posX = HU_DISP_CENTERX - (sp8[0] / 2 - 16.0f);
break;
}
posY = HU_DISP_HEIGHT - 176;
#endif
rollWin = HuWinCreate(posX, posY, sp8[0], sp8[1], 0);
HuWinBGTPLvlSet(rollWin, 0.0f);
HuWinMesSpeedSet(rollWin, 0);
HuWinMesSet(rollWin, var_r29);
}
}
void BoardRollKill(void)
{
if (rollProc) {
@ -177,15 +242,11 @@ void BoardRollWinDispSet(s32 arg0)
static void RollMain(void)
{
float sp8[2];
float var_f31;
float var_f30;
s32 var_r28;
s32 var_r27;
s32 temp_r26;
s32 temp_r25;
s32 var_r30;
s32 var_r29;
s32 i;
diceValue[0] = diceValue[1] = diceValue[2] = 0;
@ -195,37 +256,7 @@ static void RollMain(void)
BoardCameraMotionWait();
BoardCameraTargetModelSet(-1);
for (i = 0; i < numDice; i++) {
temp_r26 = rollPlayer;
if (!_CheckFlag(FLAG_ID_MAKE(1, 11))) {
var_r27 = BoardPlayerItemCount(temp_r26);
if (GWTeamGet()) {
temp_r25 = BoardPlayerSameTeamFind(temp_r26);
var_r27 += BoardPlayerItemCount(temp_r25);
}
if (BoardItemPrevGet() != -1 || var_r27 == 0 || _CheckFlag(FLAG_ID_MAKE(1, 9)) || BoardMegaDoubleDiceCheck()) {
var_r29 = MAKE_MESSID(0x09, 0x04);
}
else {
var_r29 = MAKE_MESSID(0x09, 0x02);
}
if (inputTimer != 0) {
var_r29 = MAKE_MESSID(0x30, 0x25);
}
HuWinMesMaxSizeGet(1, sp8, var_r29);
switch (GWGameStat.language) {
case 0:
var_f31 = -10000.0f;
break;
case 1:
var_f31 = HU_DISP_CENTERX - (sp8[0] / 2 - 16.0f);
break;
}
var_f30 = HU_DISP_HEIGHT - 176;
rollWin = HuWinCreate(var_f31, var_f30, sp8[0], sp8[1], 0);
HuWinBGTPLvlSet(rollWin, 0.0f);
HuWinMesSpeedSet(rollWin, 0);
HuWinMesSet(rollWin, var_r29);
}
RollWinCreate(rollPlayer);
DiceCreate(i);
DiceWaitFull(i);
DoInput(i);

View file

@ -984,7 +984,12 @@ static void CreateShopItemChoice(s32 arg0, s32 arg1) {
omObjData *temp_r30;
ItemChoiceWork *var_r31;
s16 spC;
s16 i;
#if VERSION_PAL
for(i=0; i<6; i++) {
cursorPosTbl[i][0] = 190;
}
#endif
temp_r30 = omAddObjEx(boardObjMan, 0x7E01, 0, 0, -1, UpdateShopItemChoice);
itemChoiceObj = temp_r30;
itemChoice = -1;
@ -996,11 +1001,29 @@ static void CreateShopItemChoice(s32 arg0, s32 arg1) {
var_r31->unk02 = 0;
var_r31->unk03 = arg1;
var_r31->unk06 = HuSprGrpCreate(1);
#if VERSION_PAL
if (GWLanguageGet() != 0) {
s16 winId = BoardWinIDGet();
if(winId != -1) {
WindowData *winP = &winData[winId];
for(i=0; i<6; i++) {
cursorPosTbl[i][0] = winP->pos_x+96;
}
} else {
for(i=0; i<6; i++) {
cursorPosTbl[i][0] = 166;
}
}
}
temp_r30->trans.x = cursorPosTbl[0][0];
temp_r30->trans.y = cursorPosTbl[0][1];
#else
temp_r30->trans.x = cursorPosTbl[0][0];
temp_r30->trans.y = cursorPosTbl[0][1];
if (GWLanguageGet() != 0) {
temp_r30->trans.x -= 24.0f;
}
#endif
if (GWPlayer[arg0].com) {
var_r31->unk01 = GWMessDelayGet();
}
@ -1032,9 +1055,11 @@ static void MoveShopItemChoice(omObjData *arg0, ItemChoiceWork *arg1) {
temp_r28 = arg1->unk02;
arg0->trans.x = cursorPosTbl[arg1->unk02][0];
arg0->trans.y = cursorPosTbl[arg1->unk02][1];
#if VERSION_NTSC
if (GWLanguageGet() != 0) {
arg0->trans.x -= 24.0f;
}
#endif
if (GWPlayer[arg1->unk00_field1].com) {
GetShopItemChoiceInput(arg1, arg0, &sp8);
} else {

View file

@ -74,7 +74,7 @@ static Process *starProc;
static s16 starParman = -1;
static s16 hostMdl = -1;
const s32 lbl_8011E040[9] = {
static const s32 starMesTbl1[9] = {
MAKE_MESSID(12, 0),
MAKE_MESSID(12, 9),
MAKE_MESSID(12, 18),
@ -86,7 +86,7 @@ const s32 lbl_8011E040[9] = {
MAKE_MESSID(12, 0)
};
const s32 lbl_8011E064[9][2] = {
static const s32 starMesTbl2[9][2] = {
{ MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) },
{ MAKE_MESSID(21, 35), MAKE_MESSID(21, 41) },
{ MAKE_MESSID(21, 36), MAKE_MESSID(21, 42) },
@ -249,12 +249,12 @@ static void ExecStar(void) {
BoardCameraViewSet(3);
BoardCameraMotionWait();
if (GWStarsGet(temp_r31) >= 999) {
temp_r29 = lbl_8011E040[temp_r27] + 5;
temp_r29 = starMesTbl1[temp_r27] + 5;
BoardWinCreate(0, temp_r29, BoardWinPortraitGetStar());
BoardWinWait();
BoardWinKill();
} else if (BoardPlayerCoinsGet(temp_r31) < 20 && GWSystem.last5_effect != 4) {
temp_r29 = lbl_8011E040[temp_r27] + 2;
temp_r29 = starMesTbl1[temp_r27] + 2;
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
BoardWinWait();
BoardWinKill();
@ -263,7 +263,7 @@ static void ExecStar(void) {
while (!BoardStatusStopCheck(0) || !BoardStatusStopCheck(1) || !BoardStatusStopCheck(2) || !BoardStatusStopCheck(3)) {
HuPrcVSleep();
}
temp_r29 = lbl_8011E040[temp_r27];
temp_r29 = starMesTbl1[temp_r27];
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
BoardWinInsertMesSet(BoardPlayerGetCharMess(temp_r31), 0);
BoardWinWait();
@ -275,12 +275,12 @@ static void ExecStar(void) {
HuPrcVSleep();
}
if (GWSystem.last5_effect == 4) {
temp_r29 = lbl_8011E040[temp_r27] + 8;
temp_r29 = starMesTbl1[temp_r27] + 8;
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
BoardWinWait();
break;
}
temp_r29 = lbl_8011E040[temp_r27] + 1;
temp_r29 = starMesTbl1[temp_r27] + 1;
BoardWinCreateChoice(1, temp_r29, BoardWinPortraitGetStar(), 0);
BoardWinAttrSet(0x10);
if (GWPlayer[temp_r31].com) {
@ -294,7 +294,7 @@ static void ExecStar(void) {
switch (BoardWinChoiceGet()) {
case 0:
if (BoardPlayerCoinsGet(temp_r31) < 20) {
temp_r29 = lbl_8011E040[temp_r27] + 2;
temp_r29 = starMesTbl1[temp_r27] + 2;
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
BoardWinWait();
BoardStatusShowSet(temp_r31, 0);
@ -306,7 +306,7 @@ static void ExecStar(void) {
}
goto block_A;
case 1:
temp_r29 = lbl_8011E040[temp_r27] + 4;
temp_r29 = starMesTbl1[temp_r27] + 4;
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
BoardWinWait();
BoardStatusShowSet(temp_r31, 0);
@ -326,7 +326,7 @@ static void ExecStar(void) {
}
}
block_A:
temp_r29 = lbl_8011E040[temp_r27] + 3;
temp_r29 = starMesTbl1[temp_r27] + 3;
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
BoardWinWait();
BoardWinKill();
@ -734,9 +734,9 @@ void BoardStarShowNext(s32 arg0) {
HuPrcVSleep();
}
if (var_r28 == 0) {
var_r30 = lbl_8011E040[GWBoardGet()] + 6;
var_r30 = starMesTbl1[GWBoardGet()] + 6;
} else {
var_r30 = lbl_8011E064[GWBoardGet()][0];
var_r30 = starMesTbl2[GWBoardGet()][0];
}
BoardWinCreate(3, var_r30, -1);
BoardWinPause();
@ -748,9 +748,9 @@ void BoardStarShowNext(s32 arg0) {
BoardWinKill();
HuPrcSleep(3);
if (var_r28 == 0) {
var_r30 = lbl_8011E040[GWBoardGet()] + 7;
var_r30 = starMesTbl1[GWBoardGet()] + 7;
} else {
var_r30 = lbl_8011E064[GWBoardGet()][1];
var_r30 = starMesTbl2[GWBoardGet()][1];
}
BoardWinCreate(3, var_r30, -1);
BoardWinWait();

View file

@ -1951,28 +1951,32 @@ static void UpdateItemWindow(omObjData *arg0) {
static void CreatePickerWindow(UnkUiWork01 *arg0, s32 arg1) {
float spC[2];
float var_f31;
float var_f30;
float var_f29;
float posX;
float posY;
float yOfs;
s32 var_r30;
#if VERSION_NTSC
switch (GWGameStat.language) {
case 1:
var_f31 = 0.0f;
yOfs = 0.0f;
break;
case 0:
var_f31 = 0.0f;
yOfs = 0.0f;
break;
}
#else
yOfs = 0;
#endif
if (arg1 != 0) {
var_r30 = MAKE_MESSID(0x10, 0x1A);
} else {
var_r30 = MAKE_MESSID(0x10, 0x1B);
}
HuWinMesMaxSizeGet(1, spC, var_r30);
var_f30 = -10000.0f;
var_f29 = var_f31 + (HU_DISP_HEIGHT-128);
arg0->unk06 = HuWinCreate(var_f30, var_f29, spC[0], spC[1], 0);
posX = -10000.0f;
posY = yOfs + (HU_DISP_HEIGHT-128);
arg0->unk06 = HuWinCreate(posX, posY, spC[0], spC[1], 0);
HuWinBGTPLvlSet(arg0->unk06, 0.0f);
HuWinMesSpeedSet(arg0->unk06, 0);
HuWinMesSet(arg0->unk06, var_r30);

View file

@ -396,20 +396,32 @@ static void DestroyFocus(void) {
static void CreateButtonWin(void) {
float sp8[2];
float var_f31;
float var_f30;
float posX;
float posY;
s32 var_r31;
if (viewControls != 2) {
var_r31 = MAKE_MESSID(0x09, 0x05);
var_f31 = 286.0f;
#if VERSION_PAL
HuWinMesMaxSizeGet(1, sp8, var_r31);
posX = 288-((sp8[0]/2)-32);
#endif
posY = 286.0f;
} else {
var_r31 = MAKE_MESSID(0x10, 0x4D);
var_f31 = 328.0f;
#if VERSION_PAL
posX = -10000.0f;
posY = 324.0f;
#else
posY = 328.0f;
#endif
}
HuWinMesMaxSizeGet(1, sp8, var_r31);
var_f30 = -10000.0f;
buttonWin = HuWinCreate(var_f30, var_f31, sp8[0], sp8[1], 0);
#if VERSION_NTSC
posX = -10000.0f;
#endif
buttonWin = HuWinCreate(posX, posY, sp8[0], sp8[1], 0);
HuWinBGTPLvlSet(buttonWin, 0.0f);
HuWinMesSpeedSet(buttonWin, 0);
HuWinMesSet(buttonWin, var_r31);

View file

@ -97,6 +97,11 @@ static void ExecBoardWindow(void) {
if (size[0] <= size_win[0]) {
size[0] = size_win[0];
pos[0] = pos_win[0];
#if VERSION_PAL
if(winPosIdx == 1) {
size[0] += 4;
}
#endif
} else {
pos[0] = -10000.0f;
}
@ -338,7 +343,7 @@ s32 BoardWinPortraitGetStar(void) {
void BoardWinPlayerSet(s32 player) {
s32 i;
#if VERSION_NTSC
if (player == -1) {
if (GWPartyGet() != 1) {
for (i = 0, disablePlayer = i; i < 4; i++) {
@ -354,6 +359,21 @@ void BoardWinPlayerSet(s32 player) {
} else {
disablePlayer = ~(1 << GWPlayer[player].port);
}
#else
if (player == -1) {
if (GWPartyGet() != 1) {
for (i = 0, disablePlayer = i; i < 4; i++) {
if (GWPlayer[i].com != 0) {
disablePlayer |= 1 << GWPlayer[i].port;
}
}
} else {
disablePlayer = 0;
}
} else {
disablePlayer = ~(1 << GWPlayer[player].port);
}
#endif
if (_CheckFlag(FLAG_ID_MAKE(1, 11)) != 0) {
disablePlayer = 0;
}
@ -405,4 +425,9 @@ void BoardWinStartComKeySet(void) {
void BoardWinComKeyFuncSet(BoardWinComKeyFunc func) {
comKeyFunc = func;
}
s16 BoardWinIDGet(void)
{
return windowID;
}