Bugfix: Change instant warps to use ints instead of shorts (#500)

Additionally clean up some inconsistencies surrounding instant warps
This commit is contained in:
Gregory Heskett
2022-09-30 18:41:58 -04:00
committed by GitHub
parent 8c56afddba
commit da4b4db7ae
4 changed files with 14 additions and 13 deletions

View File

@@ -540,12 +540,12 @@ static void level_cmd_create_instant_warp(void) {
warp = gAreas[sCurrAreaIndex].instantWarps + CMD_GET(u8, 2);
warp[0].id = 1;
warp[0].id = SURFACE_INSTANT_WARP_1B + CMD_GET(u8, 2);
warp[0].area = CMD_GET(u8, 3);
vec3s_set(warp[0].displacement, CMD_GET(s16, 4),
CMD_GET(s16, 6),
CMD_GET(s16, 8));
warp[0].displacement[0] = CMD_GET(s32, 4);
warp[0].displacement[1] = CMD_GET(s32, 8);
warp[0].displacement[2] = CMD_GET(s32, 12);
}
sCurrentCmd = CMD_NEXT;

View File

@@ -20,14 +20,10 @@ struct ObjectWarpNode {
/*0x08*/ struct ObjectWarpNode *next;
};
// From Surface 0x1B to 0x1E
#define INSTANT_WARP_INDEX_START 0x00 // Equal and greater than Surface 0x1B
#define INSTANT_WARP_INDEX_STOP 0x04 // Less than Surface 0x1F
struct InstantWarp {
/*0x00*/ u8 id; // 0 = 0x1B / 1 = 0x1C / 2 = 0x1D / 3 = 0x1E
/*0x01*/ u8 area;
/*0x02*/ Vec3s displacement;
/*0x04*/ Vec3f displacement;
};
struct SpawnInfo {