mirror of
https://github.com/projectPiki/pikmin2.git
synced 2025-02-02 03:43:45 +00:00
Object Types
This commit is contained in:
parent
6f563bc890
commit
a695f8cf15
@ -105,6 +105,7 @@ When compiling the project, this patch is automatically applied, if it fails to
|
||||
- plugProjectKandoU
|
||||
- <a href="https://github.com/doldecomp/pikmin2/tree/main/src/plugProjectKandoU/gamePlatMgr.cpp">plugProjectKandoU/gamePlatMgr.cpp</a>
|
||||
- <a href="https://github.com/doldecomp/pikmin2/tree/main/src/plugProjectKandoU/interactBattle.cpp">plugProjectKandoU/interactBattle.cpp</a>
|
||||
- <a href="https://github.com/doldecomp/pikmin2/tree/main/src/plugProjectKandoU/objectTypes.cpp">plugProjectKandoU/objectTypes.cpp</a>
|
||||
- plugProjectHikinoU
|
||||
- plugProjectEbisawaU
|
||||
- <a href="https://github.com/doldecomp/pikmin2/tree/main/src/plugProjectEbisawaU/ebiP2TitleCamera.cpp">plugProjectEbisawaU/ebiP2TitleCamera.cpp</a>
|
||||
|
@ -1,174 +0,0 @@
|
||||
.include "macros.inc"
|
||||
.section .rodata # 0x804732E0 - 0x8049E220
|
||||
.balign 0x8
|
||||
.global lbl_8047EA80
|
||||
lbl_8047EA80:
|
||||
.asciz "pikihead"
|
||||
.skip 0x3
|
||||
.global lbl_8047EA8C
|
||||
lbl_8047EA8C:
|
||||
.asciz "fountain"
|
||||
.skip 0x3
|
||||
.global lbl_8047EA98
|
||||
lbl_8047EA98:
|
||||
.asciz "bigfountain"
|
||||
.global lbl_8047EAA4
|
||||
lbl_8047EAA4:
|
||||
.asciz "treasure"
|
||||
.skip 0x3
|
||||
.global lbl_8047EAB0
|
||||
lbl_8047EAB0:
|
||||
.asciz "downfloor"
|
||||
.skip 0x2
|
||||
.global lbl_8047EABC
|
||||
lbl_8047EABC:
|
||||
.asciz "ujamushi"
|
||||
.skip 0x3
|
||||
|
||||
.section .data, "wa" # 0x8049E220 - 0x804EFC20
|
||||
.balign 0x8
|
||||
.global infos
|
||||
infos:
|
||||
.4byte 0x00000000
|
||||
.4byte lbl_80518B60
|
||||
.4byte 0x00010000
|
||||
.4byte lbl_80518B68
|
||||
.4byte 0x00020000
|
||||
.4byte lbl_80518B70
|
||||
.4byte 0x04010000
|
||||
.4byte lbl_80518B78
|
||||
.4byte 0x04020000
|
||||
.4byte lbl_80518B80
|
||||
.4byte 0x04030000
|
||||
.4byte lbl_80518B88
|
||||
.4byte 0x04040000
|
||||
.4byte lbl_80518B8C
|
||||
.4byte 0x04050000
|
||||
.4byte lbl_80518B94
|
||||
.4byte 0x04060000
|
||||
.4byte lbl_80518B9C
|
||||
.4byte 0x04070000
|
||||
.4byte lbl_8047EA80
|
||||
.4byte 0x04080000
|
||||
.4byte lbl_80518BA4
|
||||
.4byte 0x04090000
|
||||
.4byte lbl_80518BAC
|
||||
.4byte 0x040A0000
|
||||
.4byte lbl_80518BB4
|
||||
.4byte 0x040B0000
|
||||
.4byte lbl_8047EA8C
|
||||
.4byte 0x040C0000
|
||||
.4byte lbl_8047EA98
|
||||
.4byte 0x040D0000
|
||||
.4byte lbl_80518BBC
|
||||
.4byte 0x040E0000
|
||||
.4byte lbl_8047EAA4
|
||||
.4byte 0x040F0000
|
||||
.4byte lbl_8047EAB0
|
||||
.4byte 0x04110000
|
||||
.4byte lbl_8047EABC
|
||||
.4byte 0x04120000
|
||||
.4byte lbl_80518BC4
|
||||
.4byte 0x04130000
|
||||
.4byte lbl_80518BCC
|
||||
.4byte 0xFFFE0000
|
||||
.4byte lbl_80518BD4
|
||||
.4byte 0xFFFF0000
|
||||
.4byte lbl_80518BDC
|
||||
|
||||
.section .sdata2, "a" # 0x80516360 - 0x80520E40
|
||||
.balign 0x8
|
||||
.global lbl_80518B60
|
||||
lbl_80518B60:
|
||||
.asciz "piki"
|
||||
.skip 0x3
|
||||
.global lbl_80518B68
|
||||
lbl_80518B68:
|
||||
.asciz "navi"
|
||||
.skip 0x3
|
||||
.global lbl_80518B70
|
||||
lbl_80518B70:
|
||||
.asciz "teki"
|
||||
.skip 0x3
|
||||
.global lbl_80518B78
|
||||
lbl_80518B78:
|
||||
.asciz "pellet"
|
||||
.skip 0x1
|
||||
.global lbl_80518B80
|
||||
lbl_80518B80:
|
||||
.asciz "onyon"
|
||||
.skip 0x2
|
||||
.global lbl_80518B88
|
||||
lbl_80518B88:
|
||||
.asciz "ufo"
|
||||
.global lbl_80518B8C
|
||||
lbl_80518B8C:
|
||||
.asciz "gate"
|
||||
.skip 0x3
|
||||
.global lbl_80518B94
|
||||
lbl_80518B94:
|
||||
.asciz "hole"
|
||||
.skip 0x3
|
||||
.global lbl_80518B9C
|
||||
lbl_80518B9C:
|
||||
.asciz "honey"
|
||||
.skip 0x2
|
||||
.global lbl_80518BA4
|
||||
lbl_80518BA4:
|
||||
.asciz "plant"
|
||||
.skip 0x2
|
||||
.global lbl_80518BAC
|
||||
lbl_80518BAC:
|
||||
.asciz "rock"
|
||||
.skip 0x3
|
||||
.global lbl_80518BB4
|
||||
lbl_80518BB4:
|
||||
.asciz "cave"
|
||||
.skip 0x3
|
||||
.global lbl_80518BBC
|
||||
lbl_80518BBC:
|
||||
.asciz "bridge"
|
||||
.skip 0x1
|
||||
.global lbl_80518BC4
|
||||
lbl_80518BC4:
|
||||
.asciz "weed"
|
||||
.skip 0x3
|
||||
.global lbl_80518BCC
|
||||
lbl_80518BCC:
|
||||
.asciz "ball"
|
||||
.skip 0x3
|
||||
.global lbl_80518BD4
|
||||
lbl_80518BD4:
|
||||
.asciz "undef"
|
||||
.skip 0x2
|
||||
.global lbl_80518BDC
|
||||
lbl_80518BDC:
|
||||
.asciz "end"
|
||||
|
||||
.section .text, "ax" # 0x800056C0 - 0x80472F00
|
||||
.global getName__Q24Game7ObjTypeFUs
|
||||
getName__Q24Game7ObjTypeFUs:
|
||||
/* 8017D3F8 0017A338 3C 80 80 4B */ lis r4, infos@ha
|
||||
/* 8017D3FC 0017A33C 54 60 04 3E */ clrlwi r0, r3, 0x10
|
||||
/* 8017D400 0017A340 38 64 2C 88 */ addi r3, r4, infos@l
|
||||
/* 8017D404 0017A344 38 A0 00 00 */ li r5, 0
|
||||
lbl_8017D408:
|
||||
/* 8017D408 0017A348 A0 83 00 00 */ lhz r4, 0(r3)
|
||||
/* 8017D40C 0017A34C 28 04 FF FF */ cmplwi r4, 0xffff
|
||||
/* 8017D410 0017A350 40 82 00 0C */ bne lbl_8017D41C
|
||||
/* 8017D414 0017A354 38 60 00 00 */ li r3, 0
|
||||
/* 8017D418 0017A358 4E 80 00 20 */ blr
|
||||
lbl_8017D41C:
|
||||
/* 8017D41C 0017A35C 7C 00 20 40 */ cmplw r0, r4
|
||||
/* 8017D420 0017A360 40 82 00 1C */ bne lbl_8017D43C
|
||||
/* 8017D424 0017A364 3C 60 80 4B */ lis r3, infos@ha
|
||||
/* 8017D428 0017A368 54 A0 18 38 */ slwi r0, r5, 3
|
||||
/* 8017D42C 0017A36C 38 63 2C 88 */ addi r3, r3, infos@l
|
||||
/* 8017D430 0017A370 7C 63 02 14 */ add r3, r3, r0
|
||||
/* 8017D434 0017A374 80 63 00 04 */ lwz r3, 4(r3)
|
||||
/* 8017D438 0017A378 4E 80 00 20 */ blr
|
||||
lbl_8017D43C:
|
||||
/* 8017D43C 0017A37C 38 63 00 08 */ addi r3, r3, 8
|
||||
/* 8017D440 0017A380 38 A5 00 01 */ addi r5, r5, 1
|
||||
/* 8017D444 0017A384 4B FF FF C4 */ b lbl_8017D408
|
||||
/* 8017D448 0017A388 4E 80 00 20 */ blr
|
54
include/ObjectTypes.h
Normal file
54
include/ObjectTypes.h
Normal file
@ -0,0 +1,54 @@
|
||||
#ifndef _OBJECTTYPES_H
|
||||
#define _OBJECTTYPES_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#define OBJTYPE_PROTAGONIST 0x0000
|
||||
#define OBJTYPE_GAMEOBJECT 0x0400
|
||||
#define OBJTYPE_INVALID 0xFFF0
|
||||
|
||||
enum ObjTypes {
|
||||
// Protagonists
|
||||
OBJTYPE_Piki = OBJTYPE_PROTAGONIST + 0x0,
|
||||
OBJTYPE_Navi = OBJTYPE_PROTAGONIST + 0x1,
|
||||
OBJTYPE_Teki = OBJTYPE_PROTAGONIST + 0x2,
|
||||
|
||||
// Gameobjects
|
||||
OBJTYPE_Pellet = OBJTYPE_GAMEOBJECT + 0x1,
|
||||
OBJTYPE_Onyon = OBJTYPE_GAMEOBJECT + 0x2,
|
||||
OBJTYPE_Ufo = OBJTYPE_GAMEOBJECT + 0x3,
|
||||
OBJTYPE_Gate = OBJTYPE_GAMEOBJECT + 0x4,
|
||||
OBJTYPE_Hole = OBJTYPE_GAMEOBJECT + 0x5,
|
||||
OBJTYPE_Honey = OBJTYPE_GAMEOBJECT + 0x6,
|
||||
OBJTYPE_Pikihead = OBJTYPE_GAMEOBJECT + 0x7,
|
||||
OBJTYPE_Plant = OBJTYPE_GAMEOBJECT + 0x8,
|
||||
OBJTYPE_Rock = OBJTYPE_GAMEOBJECT + 0x9,
|
||||
OBJTYPE_Cave = OBJTYPE_GAMEOBJECT + 0xA,
|
||||
OBJTYPE_Fountain = OBJTYPE_GAMEOBJECT + 0xB,
|
||||
OBJTYPE_BigFountain = OBJTYPE_GAMEOBJECT + 0xC,
|
||||
OBJTYPE_Bridge = OBJTYPE_GAMEOBJECT + 0xD,
|
||||
OBJTYPE_Treasure = OBJTYPE_GAMEOBJECT + 0xE,
|
||||
OBJTYPE_Downfloor = OBJTYPE_GAMEOBJECT + 0xF,
|
||||
OBJTYPE_Ujamushi = OBJTYPE_GAMEOBJECT + 0x11,
|
||||
OBJTYPE_Weed = OBJTYPE_GAMEOBJECT + 0x12,
|
||||
OBJTYPE_Ball = OBJTYPE_GAMEOBJECT + 0x13,
|
||||
|
||||
// Invalid (end of list identifiers)
|
||||
OBJTYPE_Undef = OBJTYPE_INVALID + 0xE,
|
||||
OBJTYPE_End = OBJTYPE_INVALID + 0xF,
|
||||
};
|
||||
|
||||
struct ObjTypeInfo {
|
||||
u16 m_type; // _00
|
||||
char* m_name; // _04
|
||||
};
|
||||
|
||||
extern ObjTypeInfo infos[];
|
||||
|
||||
namespace Game {
|
||||
namespace ObjType {
|
||||
char* getName(u16 type);
|
||||
} // namespace ObjType
|
||||
} // namespace Game
|
||||
|
||||
#endif
|
@ -500,6 +500,7 @@ KANDO:=\
|
||||
$(BUILD_DIR)/asm/plugProjectKandoU/pelletMgr.o\
|
||||
$(BUILD_DIR)/asm/plugProjectKandoU/routeMgr.o\
|
||||
$(BUILD_DIR)/asm/plugProjectKandoU/onyonMgr.o\
|
||||
$(BUILD_DIR)/src/plugProjectKandoU/objectTypes.o\
|
||||
$(BUILD_DIR)/asm/plugProjectKandoU/objectTypes.o\
|
||||
$(BUILD_DIR)/asm/plugProjectKandoU/naviState.o\
|
||||
$(BUILD_DIR)/asm/plugProjectKandoU/pikiState.o\
|
||||
|
@ -1,40 +1,89 @@
|
||||
|
||||
#include "ObjectTypes.h"
|
||||
|
||||
/*
|
||||
* --INFO--
|
||||
* Address: 8017D3F8
|
||||
* Size: 000054
|
||||
*/
|
||||
void Game::ObjType::getName((unsigned short))
|
||||
{
|
||||
// clang-format off
|
||||
ObjTypeInfo infos[] = {
|
||||
// Protagonists
|
||||
{ OBJTYPE_Piki, "piki" },
|
||||
{ OBJTYPE_Navi, "navi" },
|
||||
{ OBJTYPE_Teki, "teki" },
|
||||
|
||||
// Gameobjects
|
||||
{ OBJTYPE_Pellet, "pellet" },
|
||||
{ OBJTYPE_Onyon, "onyon" },
|
||||
{ OBJTYPE_Ufo, "ufo" },
|
||||
{ OBJTYPE_Gate, "gate" },
|
||||
{ OBJTYPE_Hole, "hole" },
|
||||
{ OBJTYPE_Honey, "honey" },
|
||||
{ OBJTYPE_Pikihead, "pikihead" },
|
||||
{ OBJTYPE_Plant, "plant" },
|
||||
{ OBJTYPE_Rock, "rock" },
|
||||
{ OBJTYPE_Cave, "cave" },
|
||||
{ OBJTYPE_Fountain, "fountain" },
|
||||
{ OBJTYPE_BigFountain, "bigfountain" },
|
||||
{ OBJTYPE_Bridge, "bridge" },
|
||||
{ OBJTYPE_Treasure, "treasure" },
|
||||
{ OBJTYPE_Downfloor, "downfloor" },
|
||||
{ OBJTYPE_Ujamushi, "ujamushi" },
|
||||
{ OBJTYPE_Weed, "weed" },
|
||||
{ OBJTYPE_Ball, "ball" },
|
||||
|
||||
// Invalid (end of list identifiers)
|
||||
{ OBJTYPE_Undef, "undef" },
|
||||
{ OBJTYPE_End, "end" },
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
namespace Game {
|
||||
namespace ObjType {
|
||||
/*
|
||||
.loc_0x0:
|
||||
lis r4, 0x804B
|
||||
rlwinm r0,r3,0,16,31
|
||||
addi r3, r4, 0x2C88
|
||||
li r5, 0
|
||||
* --INFO--
|
||||
* Address: 8017D3F8
|
||||
* Size: 000054
|
||||
*/
|
||||
char* getName(u16 type)
|
||||
{
|
||||
for (s32 i = 0;; i++) {
|
||||
if (infos[i].m_type == 0xFFFF) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
.loc_0x10:
|
||||
lhz r4, 0x0(r3)
|
||||
cmplwi r4, 0xFFFF
|
||||
bne- .loc_0x24
|
||||
li r3, 0
|
||||
blr
|
||||
if (type == infos[i].m_type) {
|
||||
return infos[i].m_name;
|
||||
}
|
||||
}
|
||||
}
|
||||
} // namespace ObjType
|
||||
} // namespace Game
|
||||
|
||||
.loc_0x24:
|
||||
cmplw r0, r4
|
||||
bne- .loc_0x44
|
||||
lis r3, 0x804B
|
||||
rlwinm r0,r5,3,0,28
|
||||
addi r3, r3, 0x2C88
|
||||
add r3, r3, r0
|
||||
lwz r3, 0x4(r3)
|
||||
blr
|
||||
// /*
|
||||
// .loc_0x0:
|
||||
// lis r4, 0x804B
|
||||
// rlwinm r0,r3,0,16,31
|
||||
// addi r3, r4, 0x2C88
|
||||
// li r5, 0
|
||||
|
||||
.loc_0x44:
|
||||
addi r3, r3, 0x8
|
||||
addi r5, r5, 0x1
|
||||
b .loc_0x10
|
||||
blr
|
||||
*/
|
||||
}
|
||||
// .loc_0x10:
|
||||
// lhz r4, 0x0(r3)
|
||||
// cmplwi r4, 0xFFFF
|
||||
// bne- .loc_0x24
|
||||
// li r3, 0
|
||||
// blr
|
||||
|
||||
// .loc_0x24:
|
||||
// cmplw r0, r4
|
||||
// bne- .loc_0x44
|
||||
// lis r3, 0x804B
|
||||
// rlwinm r0,r5,3,0,28
|
||||
// addi r3, r3, 0x2C88
|
||||
// add r3, r3, r0
|
||||
// lwz r3, 0x4(r3)
|
||||
// blr
|
||||
|
||||
// .loc_0x44:
|
||||
// addi r3, r3, 0x8
|
||||
// addi r5, r5, 0x1
|
||||
// b .loc_0x10
|
||||
// blr
|
||||
// */
|
||||
// }
|
||||
|
Loading…
x
Reference in New Issue
Block a user