diff --git a/courses/mushroom_cup/koopa_troopa_beach/course_data.inc.c b/courses/mushroom_cup/koopa_troopa_beach/course_data.inc.c index 0cd41d95f..691943b6f 100644 --- a/courses/mushroom_cup/koopa_troopa_beach/course_data.inc.c +++ b/courses/mushroom_cup/koopa_troopa_beach/course_data.inc.c @@ -5,6 +5,7 @@ #include #include #include +#include #include @@ -8096,89 +8097,284 @@ u8 d_course_koopa_troopa_beach_crab_frames[][4096] = { }, }; -// 0x14828 +// 0x06014828 // animations? lights? -u8 d_course_koopa_troopa_beach_unk_data[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x02, 0x00, 0x03, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, - 0x00, 0x07, 0x00, 0x06, 0x00, 0x05, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, - 0x3F, 0xFF, 0x18, 0xA7, 0x0E, 0x34, 0x03, 0xC1, 0xFA, 0xA6, 0xF4, 0x34, - 0xF1, 0xC2, 0xF4, 0x34, 0xFA, 0xA7, 0x03, 0xC3, 0x0E, 0x36, 0x18, 0xA8, - 0x21, 0xC6, 0x28, 0x38, 0x2A, 0xAA, 0x28, 0x45, 0x21, 0x6B, 0x17, 0x28, - 0x0B, 0x90, 0x00, 0xB6, 0xF8, 0xAF, 0xF5, 0x8C, 0xF8, 0xE3, 0x00, 0x3C, - 0x07, 0x95, 0x0A, 0xED, 0x0A, 0xAA, 0x09, 0xED, 0x08, 0xCC, 0x07, 0x59, - 0x05, 0xAB, 0x03, 0xD3, 0x01, 0xE8, 0xFF, 0xFE, 0xFE, 0x26, 0xFC, 0x78, - 0xFB, 0x05, 0xF9, 0xE4, 0xF9, 0x27, 0xF8, 0xE4, 0x00, 0x00, 0x07, 0x1C, - 0x06, 0x52, 0x04, 0x4A, 0x01, 0x83, 0xFE, 0x7D, 0xFB, 0xB6, 0xF9, 0xAE, - 0xF8, 0xE4, 0xF9, 0xF5, 0xFC, 0xEA, 0x01, 0x63, 0x07, 0x05, 0x0D, 0x71, - 0x14, 0x49, 0x1B, 0x2F, 0xFA, 0xC3, 0xF4, 0xE1, 0xF2, 0xBA, 0xF5, 0x70, - 0xFC, 0x94, 0x06, 0xAC, 0x12, 0x40, 0x1D, 0xD3, 0x27, 0xEC, 0x2F, 0x11, - 0x31, 0xC6, 0x2E, 0x8B, 0x26, 0x3E, 0x1A, 0xFB, 0x0E, 0xDC, 0x03, 0xF9, - 0xFC, 0xEE, 0xFA, 0x23, 0xFA, 0x72, 0xFC, 0xB3, 0xFF, 0xBD, 0x02, 0x68, - 0x03, 0x8E, 0x03, 0x87, 0x03, 0x73, 0x03, 0x55, 0x03, 0x2F, 0x03, 0x05, - 0x02, 0xD8, 0x02, 0xAB, 0x02, 0x80, 0x02, 0x5B, 0x02, 0x3D, 0x02, 0x29, - 0x02, 0x22, 0x05, 0xB0, 0x01, 0x43, 0xF9, 0x0D, 0xF4, 0xA0, 0x07, 0x1C, - 0x0D, 0xFA, 0x11, 0x10, 0x11, 0xC6, 0x0F, 0x68, 0x09, 0x7B, 0x01, 0xC7, - 0xFA, 0x14, 0xF4, 0x27, 0xF1, 0xC8, 0xFC, 0x72, 0x07, 0x1C, 0x07, 0x16, - 0x06, 0xE6, 0x06, 0x5D, 0x05, 0x4B, 0xFD, 0xDE, 0xE6, 0x98, 0xEE, 0xA7, - 0xFA, 0x0B, 0x07, 0x19, 0x14, 0x28, 0x1F, 0x8D, 0x27, 0x9B, 0x2A, 0xAA, - 0x28, 0x16, 0x21, 0x31, 0x17, 0x3D, 0x0B, 0x7B, 0xFF, 0x2D, 0xF3, 0x94, - 0xE9, 0xF3, 0xE3, 0x8A, 0xE2, 0x34, 0xE5, 0x5C, 0xEA, 0x9A, 0xEF, 0x85, - 0xF1, 0xB8, 0xF1, 0xBA, 0xF1, 0xB7, 0xF1, 0xB7, 0xF1, 0xC4, 0xF1, 0xD8, - 0xF1, 0xE7, 0xF1, 0xF3, 0xF1, 0xF9, 0xF1, 0xFC, 0xF1, 0xFA, 0xF1, 0xF4, - 0xF1, 0xE9, 0xF1, 0xDB, 0xF1, 0xC8, 0xEE, 0x3A, 0xF4, 0xB0, 0x02, 0xAE, - 0x10, 0x3A, 0x15, 0x55, 0x0B, 0x47, 0xFA, 0x83, 0xF1, 0xC8, 0xF0, 0x5C, - 0xEE, 0x3A, 0xF3, 0x30, 0xFE, 0x33, 0x09, 0x39, 0x0E, 0x38, 0x0B, 0xD6, - 0x05, 0xBB, 0xFD, 0x65, 0xF4, 0x51, 0xEB, 0xFD, 0xE5, 0xE6, 0xE7, 0x41, - 0xF1, 0xAD, 0xFC, 0x24, 0x05, 0x4B, 0x0B, 0xC7, 0x0E, 0x3E, 0x0B, 0xCC, - 0x05, 0x59, 0xFC, 0x3D, 0xF1, 0xCA, 0xE7, 0x58, 0xDE, 0x3A, 0xD7, 0xC8, - 0xD5, 0x56, 0xD7, 0xC8, 0xDE, 0x95, 0xE8, 0xB9, 0xF4, 0x4D, 0xFF, 0x32, - 0x07, 0x49, 0x0A, 0x74, 0x07, 0x1D, 0xFF, 0xC4, 0xF8, 0x6B, 0xF5, 0x13, - 0xF5, 0x59, 0xF6, 0x1D, 0xF7, 0x4A, 0xF8, 0xCB, 0xFA, 0x8A, 0xFC, 0x74, - 0xFE, 0x73, 0x00, 0x71, 0x02, 0x5B, 0x04, 0x1A, 0x05, 0x9B, 0x06, 0xC8, - 0x07, 0x8C, 0x07, 0xD2, 0x00, 0x5B, 0xF8, 0xE4, 0xF9, 0xAE, 0xFB, 0xB6, - 0xFE, 0x7D, 0x01, 0x83, 0x04, 0x4A, 0x06, 0x52, 0x07, 0x1C, 0x06, 0x0A, - 0x03, 0x12, 0xFE, 0x95, 0xF8, 0xEF, 0xF2, 0x81, 0xEB, 0xAA, 0xE4, 0xC8, - 0x05, 0x1E, 0x0B, 0x0F, 0x0D, 0x46, 0x0A, 0x90, 0x03, 0x6C, 0xF9, 0x54, - 0xED, 0xC0, 0xE2, 0x2D, 0xD8, 0x14, 0xD0, 0xEF, 0xCE, 0x3A, 0xD1, 0x76, - 0xD9, 0xC4, 0xE5, 0x08, 0xF1, 0x28, 0xFC, 0x07, 0x03, 0x0E, 0x05, 0xD8, - 0x05, 0x89, 0x03, 0x4A, 0x00, 0x41, 0xFD, 0x97, 0xFC, 0x72, 0xFC, 0x79, - 0xFC, 0x8D, 0xFC, 0xAB, 0xFC, 0xD1, 0xFC, 0xFB, 0xFD, 0x28, 0xFD, 0x55, - 0xFD, 0x80, 0xFD, 0xA5, 0xFD, 0xC3, 0xFD, 0xD7, 0xFD, 0xDE, 0xFA, 0x50, - 0xFE, 0x8E, 0x06, 0x6D, 0x0A, 0xAA, 0xF8, 0xE4, 0xF0, 0x8A, 0xEE, 0x33, - 0xEE, 0x3A, 0xF0, 0x98, 0xF6, 0x85, 0xFE, 0x39, 0x05, 0xEC, 0x0B, 0xD9, - 0x0E, 0x38, 0x03, 0x33, 0xF8, 0x2E, 0xF8, 0x48, 0xF8, 0xA7, 0xF9, 0x68, - 0xFA, 0xA7, 0x02, 0x22, 0x19, 0x68, 0x11, 0x59, 0x05, 0xF5, 0xF8, 0xE7, - 0xEB, 0xD8, 0xE0, 0x73, 0xD8, 0x65, 0xD5, 0x56, 0xD8, 0x65, 0xE0, 0x73, - 0xEB, 0xD8, 0xF8, 0xE7, 0x05, 0xF5, 0x11, 0x59, 0x19, 0x68, 0x1C, 0x76, - 0x1A, 0xFD, 0x17, 0x78, 0x13, 0x46, 0x0F, 0xC2, 0x0E, 0x48, 0x0E, 0x46, - 0x0E, 0x42, 0x0E, 0x3E, 0x0E, 0x3C, 0x0E, 0x3C, 0x0E, 0x3C, 0x0E, 0x3B, - 0x0E, 0x3B, 0x0E, 0x3A, 0x0E, 0x3A, 0x0E, 0x39, 0x0E, 0x39, 0x0E, 0x38, - 0x0E, 0x38, 0x11, 0xC6, 0x0B, 0x51, 0xFD, 0x4C, 0xEF, 0xBD, 0xEA, 0xAB, - 0xF4, 0xB6, 0x05, 0x6A, 0x0E, 0x38, 0x0F, 0xA4, 0x11, 0xC6, 0x0C, 0xD6, - 0x01, 0xD4, 0xF6, 0xCD, 0xF1, 0xC8, 0xF4, 0x25, 0xFA, 0x3E, 0x02, 0x94, - 0x0B, 0xA9, 0x14, 0x00, 0x1A, 0x19, 0x3F, 0xFF, 0x3F, 0xFF, 0xC0, 0x01, - 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x37, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x39, - 0x00, 0x01, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x8B, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x89, - 0x00, 0x01, 0x01, 0x8A, 0x00, 0x01, 0x00, 0xA9, 0x00, 0x37, 0x00, 0xAA, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x37, 0x00, 0x72, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x37, 0x00, 0x3B, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x87, - 0x00, 0x01, 0x01, 0x88, 0x00, 0x01, 0x01, 0x4F, 0x00, 0x37, 0x01, 0x50, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x37, 0x01, 0x18, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x37, 0x00, 0xE1, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x37, 0x00, 0x0A, 0x06, 0x01, 0x48, 0x38, 0x06, 0x01, 0x4B, 0x50, +u32 d_course_koopa_troopa_beach_unk_data1[] = { + 0x00000000, + 0x00000001, + 0x00000000, + 0x00000001, +}; + +// 0x06014838 +s16 d_course_koopa_troopa_beach_unk_data2[] = { + 0x0000, 0x0000, + 0x0000, 0x0001, + 0x0002, 0x0003, + 0x0005, 0x0006, + 0x0007, 0x0007, + 0x0007, 0x0006, + 0x0005, 0x0003, + 0x0002, 0x0001, + 0x0000, 0x0000, + 0x0000, 0xffff, + 0xffff, 0xffff, + 0xffff, 0xffff, + 0xffff, 0xffff, + 0xffff, 0xffff, + 0xffff, 0xffff, + 0x0000, 0x0000, + 0x0000, 0x0000, + 0x0000, 0x0000, + 0x0000, 0xffff, + 0x0000, 0x0000, + 0x0001, 0x0001, + 0x0000, 0x0000, + 0xffff, 0xffff, + 0xffff, 0xffff, + 0x0000, 0x0000, + 0x0001, 0x0001, + 0x0001, 0x0000, + 0x0000, 0x0000, + 0x3fff, 0x3fff, + 0x3fff, 0x18a7, + 0x0e34, 0x03c1, + 0xfaa6, 0xf434, + 0xf1c2, 0xf434, + 0xfaa7, 0x03c3, + 0x0e36, 0x18a8, + 0x21c6, 0x2838, + 0x2aaa, 0x2845, + 0x216b, 0x1728, + 0x0b90, 0x00b6, + 0xf8af, 0xf58c, + 0xf8e3, 0x003c, + 0x0795, 0x0aed, + 0x0aaa, 0x09ed, + 0x08cc, 0x0759, + 0x05ab, 0x03d3, + 0x01e8, 0xfffe, + 0xfe26, 0xfc78, + 0xfb05, 0xf9e4, + 0xf927, 0xf8e4, + 0x0000, 0x071c, + 0x0652, 0x044a, + 0x0183, 0xfe7d, + 0xfbb6, 0xf9ae, + 0xf8e4, 0xf9f5, + 0xfcea, 0x0163, + 0x0705, 0x0d71, + 0x1449, 0x1b2f, + 0xfac3, 0xf4e1, + 0xf2ba, 0xf570, + 0xfc94, 0x06ac, + 0x1240, 0x1dd3, + 0x27ec, 0x2f11, + 0x31c6, 0x2e8b, + 0x263e, 0x1afb, + 0x0edc, 0x03f9, + 0xfcee, 0xfa23, + 0xfa72, 0xfcb3, + 0xffbd, 0x0268, + 0x038e, 0x0387, + 0x0373, 0x0355, + 0x032f, 0x0305, + 0x02d8, 0x02ab, + 0x0280, 0x025b, + 0x023d, 0x0229, + 0x0222, 0x05b0, + 0x0143, 0xf90d, + 0xf4a0, 0x071c, + 0x0dfa, 0x1110, + 0x11c6, 0x0f68, + 0x097b, 0x01c7, + 0xfa14, 0xf427, + 0xf1c8, 0xfc72, + 0x071c, 0x0716, + 0x06e6, 0x065d, + 0x054b, 0xfdde, + 0xe698, 0xeea7, + 0xfa0b, 0x0719, + 0x1428, 0x1f8d, + 0x279b, 0x2aaa, + 0x2816, 0x2131, + 0x173d, 0x0b7b, + 0xff2d, 0xf394, + 0xe9f3, 0xe38a, + 0xe234, 0xe55c, + 0xea9a, 0xef85, + 0xf1b8, 0xf1ba, + 0xf1b7, 0xf1b7, + 0xf1c4, 0xf1d8, + 0xf1e7, 0xf1f3, + 0xf1f9, 0xf1fc, + 0xf1fa, 0xf1f4, + 0xf1e9, 0xf1db, + 0xf1c8, 0xee3a, + 0xf4b0, 0x02ae, + 0x103a, 0x1555, + 0x0b47, 0xfa83, + 0xf1c8, 0xf05c, + 0xee3a, 0xf330, + 0xfe33, 0x0939, + 0x0e38, 0x0bd6, + 0x05bb, 0xfd65, + 0xf451, 0xebfd, + 0xe5e6, 0xe741, + 0xf1ad, 0xfc24, + 0x054b, 0x0bc7, + 0x0e3e, 0x0bcc, + 0x0559, 0xfc3d, + 0xf1ca, 0xe758, + 0xde3a, 0xd7c8, + 0xd556, 0xd7c8, + 0xde95, 0xe8b9, + 0xf44d, 0xff32, + 0x0749, 0x0a74, + 0x071d, 0xffc4, + 0xf86b, 0xf513, + 0xf559, 0xf61d, + 0xf74a, 0xf8cb, + 0xfa8a, 0xfc74, + 0xfe73, 0x0071, + 0x025b, 0x041a, + 0x059b, 0x06c8, + 0x078c, 0x07d2, + 0x005b, 0xf8e4, + 0xf9ae, 0xfbb6, + 0xfe7d, 0x0183, + 0x044a, 0x0652, + 0x071c, 0x060a, + 0x0312, 0xfe95, + 0xf8ef, 0xf281, + 0xebaa, 0xe4c8, + 0x051e, 0x0b0f, + 0x0d46, 0x0a90, + 0x036c, 0xf954, + 0xedc0, 0xe22d, + 0xd814, 0xd0ef, + 0xce3a, 0xd176, + 0xd9c4, 0xe508, + 0xf128, 0xfc07, + 0x030e, 0x05d8, + 0x0589, 0x034a, + 0x0041, 0xfd97, + 0xfc72, 0xfc79, + 0xfc8d, 0xfcab, + 0xfcd1, 0xfcfb, + 0xfd28, 0xfd55, + 0xfd80, 0xfda5, + 0xfdc3, 0xfdd7, + 0xfdde, 0xfa50, + 0xfe8e, 0x066d, + 0x0aaa, 0xf8e4, + 0xf08a, 0xee33, + 0xee3a, 0xf098, + 0xf685, 0xfe39, + 0x05ec, 0x0bd9, + 0x0e38, 0x0333, + 0xf82e, 0xf848, + 0xf8a7, 0xf968, + 0xfaa7, 0x0222, + 0x1968, 0x1159, + 0x05f5, 0xf8e7, + 0xebd8, 0xe073, + 0xd865, 0xd556, + 0xd865, 0xe073, + 0xebd8, 0xf8e7, + 0x05f5, 0x1159, + 0x1968, 0x1c76, + 0x1afd, 0x1778, + 0x1346, 0x0fc2, + 0x0e48, 0x0e46, + 0x0e42, 0x0e3e, + 0x0e3c, 0x0e3c, + 0x0e3c, 0x0e3b, + 0x0e3b, 0x0e3a, + 0x0e3a, 0x0e39, + 0x0e39, 0x0e38, + 0x0e38, 0x11c6, + 0x0b51, 0xfd4c, + 0xefbd, 0xeaab, + 0xf4b6, 0x056a, + 0x0e38, 0x0fa4, + 0x11c6, 0x0cd6, + 0x01d4, 0xf6cd, + 0xf1c8, 0xf425, + 0xfa3e, 0x0294, + 0x0ba9, 0x1400, + 0x1a19, 0x3fff, + 0x3fff, 0xc001, + 0x3fff, 0x8001, +}; + +// 0x06014B50 +animation_type_3_triplet d_course_koopa_troopa_beach_unk_data3[] = { + { + { 0x0001, 0x0000 }, + { 0x0037, 0x0001 }, + { 0x0001, 0x0000 }, + }, + { + { 0x0001, 0x0038 }, + { 0x0001, 0x0039 }, + { 0x0001, 0x003a }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + { 0x0001, 0x018b }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0189 }, + { 0x0001, 0x018a }, + }, + { + { 0x0001, 0x00a9 }, + { 0x0037, 0x00aa }, + { 0x0001, 0x0000 }, + }, + { + { 0x0001, 0x0000 }, + { 0x0037, 0x0072 }, + { 0x0001, 0x0000 }, + }, + { + { 0x0001, 0x0000 }, + { 0x0037, 0x003b }, + { 0x0001, 0x0000 }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0187 }, + { 0x0001, 0x0188 }, + }, + { + { 0x0001, 0x014f }, + { 0x0037, 0x0150 }, + { 0x0001, 0x0000 }, + }, + { + { 0x0001, 0x0000 }, + { 0x0037, 0x0118 }, + { 0x0001, 0x0000 }, + }, + { + { 0x0001, 0x0000 }, + { 0x0037, 0x00e1 }, + { 0x0001, 0x0000 }, + }, +}; + +// 0x06014BD4 +animation_type_2 d_course_koopa_troopa_beach_unk_data4 = { + 0x00010000, + 0x00000000, + 0x0037, + 0x000a, + d_course_koopa_troopa_beach_unk_data2, + d_course_koopa_troopa_beach_unk_data3, }; // 0x14BE8 @@ -8342,46 +8538,158 @@ Gfx d_course_koopa_troopa_beach_dl_16990[] = gsSPEndDisplayList(), }; -// Likely lighting data -u8 d_course_koopa_troopa_beach_unk3[456] = { - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x66, 0x30, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFB, 0x00, 0x00, 0x00, 0x05, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x68, 0x50, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x68, 0xF0, - 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x69, 0x90, - 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFB, - 0xFF, 0xFF, 0xFF, 0xFB, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x01, 0x68, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x01, 0x68, 0xF0, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x01, 0x69, 0x90, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, - 0x06, 0x01, 0x4B, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 +// 0x60169b0 +u32 d_course_koopa_troopa_beach_unk4[] = { + 0x00000001, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + + 0x00000001, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + d_course_koopa_troopa_beach_dl_16630, + 0x00000000, + 0x00000000, + 0x00000000, + + 0x00000001, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + 0x00000000, + 0x00000000, + 0xfffffffb, + 0x00000005, + + 0x00000001, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + d_course_koopa_troopa_beach_dl_16850, + 0x00000000, + 0x00000000, + 0x00000000, + + 0x00000001, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + d_course_koopa_troopa_beach_dl_168F0, + 0x00000024, + 0x00000000, + 0x00000000, + + 0x00000001, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + d_course_koopa_troopa_beach_dl_16990, + 0x00000019, + 0x00000000, + 0x00000000, + + 0x00000002, + 0x00000002, + + 0x00000002, + 0x00000002, + + 0x00000002, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + 0x00000000, + 0x00000000, + 0xfffffffb, + 0xfffffffb, + + 0x00000001, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + d_course_koopa_troopa_beach_dl_16850, + 0x00000000, + 0x00000000, + 0x00000000, + + 0x00000001, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + d_course_koopa_troopa_beach_dl_168F0, + 0x00000024, + 0x00000000, + 0x00000000, + + 0x00000001, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + d_course_koopa_troopa_beach_dl_16990, + 0x00000019, + 0x00000000, + 0x00000000, + + 0x00000002, + 0x00000002, + + 0x00000002, + 0x00000002, + + 0x00000002, + 0x00000002, + + 0x00000002, + 0x00000002, + + 0x00000002, + 0x00000002, + + 0x00000002, + 0x00000002, + + 0x00000003, + 0x00000002, +}; + +// 0x06016B60 +animation_type_2 *d_course_koopa_troopa_beach_unk_data5[] = { + &d_course_koopa_troopa_beach_unk_data4, +}; + +// No idea what this stuff is +u32 d_course_koopa_troopa_beach_unk_data6[] = { + 0x00000000, + 0x00000000, + 0x00000001, + 0x00000000, + 0x00000001, }; // 0x16B78 diff --git a/courses/special_cup/rainbow_road/course_data.inc.c b/courses/special_cup/rainbow_road/course_data.inc.c index 7224a49f8..2e6c35421 100644 --- a/courses/special_cup/rainbow_road/course_data.inc.c +++ b/courses/special_cup/rainbow_road/course_data.inc.c @@ -5,6 +5,7 @@ #include #include #include +#include #include @@ -3412,102 +3413,126 @@ Gfx d_course_rainbow_road_dl_15F18[] = gsSPEndDisplayList(), }; -// 0x15FC8 todo: Format -u32 d_rainbow_road_chomp_jaw_animation[] = { - // Unknown data, probably not vertexes - // Seemingly handled by func_80004C30 - 0x00003fff, - 0x96029483, - 0x90d28c1b, - 0x878e845a, - 0x83ac88ae, - 0x92649bc5, - 0x9fc99c7c, - 0x950f8c27, - 0x846d808a, - 0x83488abb, - 0x92739602, - 0x6fb270c6, - 0x736976ba, - 0x79d67bdd, - 0x7beb7752, - 0x6ed766ca, - 0x63796692, - 0x6d54756c, - 0x7c878054, - 0x7e7c78b0, - 0x728d6fb2, - 0x96029483, - 0x90d28c1b, - 0x878e845a, - 0x83ac88ae, - 0x92649bc5, - 0x9fc99c7c, - 0x950f8c27, - 0x846d808a, - 0x83488abb, - 0x92739602, - 0x6fb270c6, - 0x736976ba, - 0x79d67bdd, - 0x7beb7752, - 0x6ed766ca, - 0x63796692, - 0x6d54756c, - 0x7c878054, - 0x7e7c78b0, - 0x728d6fb2, - 0x6fb270c6, - 0x736976ba, - 0x79d67bdd, - 0x7beb7752, - 0x6ed766ca, - 0x63796692, - 0x6d54756c, - 0x7c878054, - 0x7e7c78b0, - 0x728d6fb2, - 0x3fff0000, +// 0x06015FC8 +s16 d_rainbow_road_chomp_jaw_animation[] = { + 0x0000, 0x3fff, + 0x9602, 0x9483, + 0x90d2, 0x8c1b, + 0x878e, 0x845a, + 0x83ac, 0x88ae, + 0x9264, 0x9bc5, + 0x9fc9, 0x9c7c, + 0x950f, 0x8c27, + 0x846d, 0x808a, + 0x8348, 0x8abb, + 0x9273, 0x9602, + 0x6fb2, 0x70c6, + 0x7369, 0x76ba, + 0x79d6, 0x7bdd, + 0x7beb, 0x7752, + 0x6ed7, 0x66ca, + 0x6379, 0x6692, + 0x6d54, 0x756c, + 0x7c87, 0x8054, + 0x7e7c, 0x78b0, + 0x728d, 0x6fb2, + 0x9602, 0x9483, + 0x90d2, 0x8c1b, + 0x878e, 0x845a, + 0x83ac, 0x88ae, + 0x9264, 0x9bc5, + 0x9fc9, 0x9c7c, + 0x950f, 0x8c27, + 0x846d, 0x808a, + 0x8348, 0x8abb, + 0x9273, 0x9602, + 0x6fb2, 0x70c6, + 0x7369, 0x76ba, + 0x79d6, 0x7bdd, + 0x7beb, 0x7752, + 0x6ed7, 0x66ca, + 0x6379, 0x6692, + 0x6d54, 0x756c, + 0x7c87, 0x8054, + 0x7e7c, 0x78b0, + 0x728d, 0x6fb2, + 0x6fb2, 0x70c6, + 0x7369, 0x76ba, + 0x79d6, 0x7bdd, + 0x7beb, 0x7752, + 0x6ed7, 0x66ca, + 0x6379, 0x6692, + 0x6d54, 0x756c, + 0x7c87, 0x8054, + 0x7e7c, 0x78b0, + 0x728d, 0x6fb2, + 0x3fff, 0x0000, +}; - // 0x16098 - 0x00010000, - 0x00010000, - 0x00010000, - 0x00010000, - 0x00010001, - 0x00010000, - 0x00010000, - 0x00010000, - 0x0014002a, - 0x00010000, - 0x00010000, - 0x00140002, - 0x00010000, - 0x00010066, - 0x00010000, - 0x00010000, - 0x00010000, - 0x00140052, - 0x00010000, - 0x00010000, - 0x0014003e, - 0x00010000, - 0x00010000, +// 0x06016098 +animation_type_3_triplet d_rainbow_road_unk1[] = { + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0001 }, + { 0x0001, 0x0000 }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + { 0x0014, 0x002a }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + { 0x0014, 0x0002 }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0066 }, + { 0x0001, 0x0000 }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + { 0x0014, 0x0052 }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + { 0x0014, 0x003e }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + { 0x0014, 0x0016 }, + }, +}; - // 0x160f8 - 0x00140016, +// 0x060160F8 +animation_type_2 d_rainbow_road_unk2 = { 0x00010000, 0x00000000, - 0x00140007, + 0x0014, + 0x0007, + d_rainbow_road_chomp_jaw_animation, + d_rainbow_road_unk1, +}; - // 0x16108 - 0x06015FC8, - 0x06016098, - 0x060160F8, +// 0x0601610C +animation_type_2 *d_rainbow_road_unk3[] = { + &d_rainbow_road_unk2, +}; - // 0x16114 +// 0x06016110 +u32 d_rainbow_road_unk4[] = { 0x00000001, 0x00000002, + 0x00000000, 0x00000007, 0x00000000, @@ -3518,6 +3543,7 @@ u32 d_rainbow_road_chomp_jaw_animation[] = { 0x00000001, 0x00000002, + 0x00000000, 0x00000007, 0x00000000, @@ -3536,6 +3562,7 @@ u32 d_rainbow_road_chomp_jaw_animation[] = { 0x00000002, 0x00000002, + 0x00000000, 0x00000007, 0x00000000, @@ -3546,6 +3573,7 @@ u32 d_rainbow_road_chomp_jaw_animation[] = { 0x00000001, 0x00000002, + 0x00000000, 0x00000007, 0x00000000, @@ -3572,10 +3600,16 @@ u32 d_rainbow_road_chomp_jaw_animation[] = { 0x00000002, 0x00000002, + 0x00000002, 0x00000002, + 0x00000003, 0x00000002, +}; + +// No idea what this stuff is +u32 d_rainbow_road_unk5[] = { 0x00000000, 0x00000000, 0x00000002, diff --git a/courses/special_cup/yoshi_valley/course_data.inc.c b/courses/special_cup/yoshi_valley/course_data.inc.c index aecac9f79..cb5a65f44 100644 --- a/courses/special_cup/yoshi_valley/course_data.inc.c +++ b/courses/special_cup/yoshi_valley/course_data.inc.c @@ -5,6 +5,7 @@ #include #include #include +#include #include @@ -10705,127 +10706,154 @@ Gfx d_course_yoshi_valley_dl_145D0[] = gsSPEndDisplayList(), }; -// 0x145E8 Flag animation? -u32 d_course_yoshi_valley_unk2[] = { - // Unknown data, doesn't appear to be vertexes. - 0x000012e3, - 0x0f43099f, - 0x02d1fbb3, - 0xf51befe3, - 0xecc0ea97, - 0xe905e817, - 0xe7dae85a, - 0xe9a5ebc7, - 0xef2bf51f, - 0xfcd4053b, - 0x0d4913ee, - 0x181e1a24, - 0x1b1b1b28, - 0x1a71191c, - 0x174f152f, - 0x0dfd0b37, - 0x064a006d, - 0xfadaf6c7, - 0xf4d9f371, - 0xf25df1a3, - 0xf148f152, - 0xf1c6f2aa, - 0xf404f622, - 0xfa11ff44, - 0x04fd0a7d, - 0x0f0811dd, - 0x132a13b1, - 0x139312f3, - 0x11f210b2, - 0x0f55f43f, - 0xf376f2f2, - 0xf2b7f2c3, - 0xf319f3b9, - 0xf4a5f64b, - 0xf8e8fc2a, - 0xffc50367, - 0x06c3098b, - 0x0b730c85, - 0x0ce40ca5, - 0x0bdd0aa2, - 0x08f806a5, - 0x03d300b6, - 0xfd87fa7a, - 0xf7c5f59f, - 0xf5bcf61a, - 0xf722f8ba, - 0xfac7fd30, - 0xffd802a6, - 0x05800829, - 0x0a3a0bbc, - 0x0cb90d3f, - 0x0d4c0c44, - 0x0a3b0785, - 0x04780169, - 0xfeadfc97, - 0xfb3efa01, - 0xf8dbf7d5, - 0xf6f8f64f, - 0xf5e204ea, - 0x04b30421, - 0x034c0250, - 0x0147004b, - 0xff77feaa, - 0xfdc3fcd9, - 0xfc02fb55, - 0xfae7fad0, - 0xfb25fbdc, - 0xfcd6fdf4, - 0xff170020, - 0x00f201a2, - 0x025302fe, - 0x039a0422, - 0x048c04d1, - 0x3fffc001, - 0x3fff0000, +// 0x060145E8 Flag animation? +s16 d_course_yoshi_valley_unk1[] = { + 0x0000, 0x12e3, + 0x0f43, 0x099f, + 0x02d1, 0xfbb3, + 0xf51b, 0xefe3, + 0xecc0, 0xea97, + 0xe905, 0xe817, + 0xe7da, 0xe85a, + 0xe9a5, 0xebc7, + 0xef2b, 0xf51f, + 0xfcd4, 0x053b, + 0x0d49, 0x13ee, + 0x181e, 0x1a24, + 0x1b1b, 0x1b28, + 0x1a71, 0x191c, + 0x174f, 0x152f, + 0x0dfd, 0x0b37, + 0x064a, 0x006d, + 0xfada, 0xf6c7, + 0xf4d9, 0xf371, + 0xf25d, 0xf1a3, + 0xf148, 0xf152, + 0xf1c6, 0xf2aa, + 0xf404, 0xf622, + 0xfa11, 0xff44, + 0x04fd, 0x0a7d, + 0x0f08, 0x11dd, + 0x132a, 0x13b1, + 0x1393, 0x12f3, + 0x11f2, 0x10b2, + 0x0f55, 0xf43f, + 0xf376, 0xf2f2, + 0xf2b7, 0xf2c3, + 0xf319, 0xf3b9, + 0xf4a5, 0xf64b, + 0xf8e8, 0xfc2a, + 0xffc5, 0x0367, + 0x06c3, 0x098b, + 0x0b73, 0x0c85, + 0x0ce4, 0x0ca5, + 0x0bdd, 0x0aa2, + 0x08f8, 0x06a5, + 0x03d3, 0x00b6, + 0xfd87, 0xfa7a, + 0xf7c5, 0xf59f, + 0xf5bc, 0xf61a, + 0xf722, 0xf8ba, + 0xfac7, 0xfd30, + 0xffd8, 0x02a6, + 0x0580, 0x0829, + 0x0a3a, 0x0bbc, + 0x0cb9, 0x0d3f, + 0x0d4c, 0x0c44, + 0x0a3b, 0x0785, + 0x0478, 0x0169, + 0xfead, 0xfc97, + 0xfb3e, 0xfa01, + 0xf8db, 0xf7d5, + 0xf6f8, 0xf64f, + 0xf5e2, 0x04ea, + 0x04b3, 0x0421, + 0x034c, 0x0250, + 0x0147, 0x004b, + 0xff77, 0xfeaa, + 0xfdc3, 0xfcd9, + 0xfc02, 0xfb55, + 0xfae7, 0xfad0, + 0xfb25, 0xfbdc, + 0xfcd6, 0xfdf4, + 0xff17, 0x0020, + 0x00f2, 0x01a2, + 0x0253, 0x02fe, + 0x039a, 0x0422, + 0x048c, 0x04d1, + 0x3fff, 0xc001, + 0x3fff, 0x0000, +}; - // 0x14714 - 0x00010000, - 0x00010000, - 0x00010000, - 0x00010000, - 0x00010000, - 0x00010000, - 0x00010000, - 0x00010000, - 0x00010094, - 0x00010092, - 0x00010000, - 0x00010093, - 0x00010000, - 0x00010000, - 0x001d0075, - 0x00010000, - 0x00010000, - 0x001d0058, - 0x00010000, - 0x00010000, - 0x001d003b, - 0x00010000, - 0x00010000, - 0x001d001e, - 0x00010000, - 0x00010000, - 0x001d0001, +// 0x06014714 +animation_type_3_triplet d_course_yoshi_valley_unk2[] = { + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + { 0x0001, 0x0094 }, + }, + { + { 0x0001, 0x0092 }, + { 0x0001, 0x0000 }, + { 0x0001, 0x0093 }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + { 0x001d, 0x0075 }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + { 0x001d, 0x0058 }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + { 0x001d, 0x003b }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + { 0x001d, 0x001e }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + { 0x001d, 0x0001 }, + }, +}; - // 0x14780 +// 0x06014780 +animation_type_2 d_course_yoshi_valley_unk3 = { 0x00010000, 0x00000000, - 0x001d0008, + 0x001d, + 0x0008, + d_course_yoshi_valley_unk1, + d_course_yoshi_valley_unk2, +}; - // 0x1478C - 0x060145E8, - 0x06014714, - 0x06014780, +// 0x06014794 +animation_type_2 *d_course_yoshi_valley_unk4[] = { + &d_course_yoshi_valley_unk3, +}; - // 0x14798 +// 0x06014798 +u32 d_course_yoshi_valley_unk5[] = { 0x00000001, 0x00000002, + 0x00000000, 0x00000007, 0x00000000, @@ -10836,6 +10864,7 @@ u32 d_course_yoshi_valley_unk2[] = { 0x00000001, 0x00000002, + 0x00000000, 0x00000007, 0x00000000, @@ -10846,6 +10875,7 @@ u32 d_course_yoshi_valley_unk2[] = { 0x00000001, 0x00000002, + 0x00000000, 0x00000007, 0x00000000, @@ -10856,6 +10886,7 @@ u32 d_course_yoshi_valley_unk2[] = { 0x00000001, 0x00000002, + 0x00000000, 0x00000007, 0x00000000, @@ -10866,6 +10897,7 @@ u32 d_course_yoshi_valley_unk2[] = { 0x00000001, 0x00000002, + 0x00000000, 0x00000007, 0x00000000, @@ -10876,6 +10908,7 @@ u32 d_course_yoshi_valley_unk2[] = { 0x00000001, 0x00000002, + 0x00000000, 0x00000007, 0x00000000, @@ -10886,6 +10919,7 @@ u32 d_course_yoshi_valley_unk2[] = { 0x00000001, 0x00000002, + 0x00000000, 0x00000007, 0x00000000, @@ -10896,6 +10930,7 @@ u32 d_course_yoshi_valley_unk2[] = { 0x00000001, 0x00000002, + 0x00000000, 0x00000007, 0x00000000, @@ -10906,22 +10941,34 @@ u32 d_course_yoshi_valley_unk2[] = { 0x00000002, 0x00000002, + 0x00000002, 0x00000002, + 0x00000002, 0x00000002, + 0x00000002, 0x00000002, + 0x00000002, 0x00000002, + 0x00000002, 0x00000002, + 0x00000002, 0x00000002, + 0x00000002, 0x00000002, + 0x00000003, 0x00000002, +}; + +// No idea what this stuff is +u32 d_course_yoshi_valley_unk6[] = { 0x00000000, 0x00000001, }; diff --git a/courses/star_cup/sherbet_land/course_data.inc.c b/courses/star_cup/sherbet_land/course_data.inc.c index 27dc16bd9..4e322313f 100644 --- a/courses/star_cup/sherbet_land/course_data.inc.c +++ b/courses/star_cup/sherbet_land/course_data.inc.c @@ -5,6 +5,7 @@ #include #include #include +#include #include @@ -4286,204 +4287,934 @@ Gfx d_course_sherbet_land_dl_8E00[] = gsSPEndDisplayList(), }; -// 0x8EB0 unk data -u32 d_course_sherbet_land_unk_data[] = { - 0x00000001, 0x00000002, 0x00000000, 0x00000007, - 0x00000000, 0x06008D00, 0x00000000, 0x00000000, - 0x00000000, 0x00000001, 0x00000002, 0x00000000, - 0x00000007, 0x00000000, 0x00000000, 0xFFFFFFCD, - 0x00000054, 0xFFFFFFF3, 0x00000001, 0x00000002, - 0x00000000, 0x00000007, 0x00000000, 0x06008730, - 0x00000000, 0x00000000, 0x00000000, 0x00000002, - 0x00000002, 0x00000000, 0x00000007, 0x00000000, - 0x00000000, 0x00000033, 0x00000054, 0xFFFFFFF3, - 0x00000001, 0x00000002, 0x00000000, 0x00000007, - 0x00000000, 0x06008808, 0x00000000, 0x00000000, - 0x00000000, 0x00000002, 0x00000002, 0x00000000, - 0x00000007, 0x00000000, 0x00000000, 0xFFFFFFDA, - 0xFFFFFFCA, 0xFFFFFFF3, 0x00000001, 0x00000002, - 0x00000000, 0x00000007, 0x00000000, 0x06008930, - 0x00000000, 0x00000000, 0x00000000, 0x00000002, - 0x00000002, 0x00000000, 0x00000007, 0x00000000, - 0x00000000, 0x00000026, 0xFFFFFFCA, 0xFFFFFFF3, - 0x00000001, 0x00000002, 0x00000000, 0x00000007, - 0x00000000, 0x06008A78, 0x00000000, 0x00000000, - 0x00000000, 0x00000002, 0x00000002, 0x00000000, - 0x00000007, 0x00000000, 0x00000000, 0x00000000, - 0x0000006F, 0xFFFFFFED, 0x00000001, 0x00000002, - 0x00000000, 0x00000007, 0x00000000, 0x06008E00, - 0x00000000, 0x00000000, 0x00000000, 0x00000002, - 0x00000002, 0x00000002, 0x00000002, 0x00000002, - 0x00000002, 0x00000003, 0x00000002, 0x00000046, - 0x0005000C, 0x001B002B, 0x0031002D, 0x00230016, - 0x00090000, 0xFFF9FFF2, 0xFFECFFE8, 0xFFE7FFEA, - 0xFFF2FFFB, 0x00010005, 0xF156F29E, 0xF5C2F9B3, - 0xFD64012B, 0x058E09BC, 0x0CE50E38, 0x0D2A0A45, - 0x065C0241, 0xFEC7FB88, 0xF7F7F4AE, 0xF245F156, - 0x0005FF93, 0xFE97FD9B, 0xFD28FD59, 0xFDDAFE8B, - 0xFF4C0000, 0x00C501B1, 0x0293033E, 0x03820325, - 0x0248013F, 0x00620005, 0x00050005, 0x00060006, - 0x00070007, 0x00060006, 0x00050005, 0x00040004, - 0x00030003, 0x00030003, 0x00040004, 0x00040005, - 0x14C716B0, 0x1AE31F17, 0x21001FC7, 0x1CD8194D, - 0x163E14C7, 0x158917C9, 0x1A921CF1, 0x1DF21CFE, - 0x1AB81801, 0x15BB14C7, 0xBDEEBDEE, 0xBDEEBDEF, - 0xBDEFBDEF, 0xBDEFBDEE, 0xBDEEBDEE, 0xBDEEBDEE, - 0xBDEEBDEE, 0xBDEEBDEE, 0xBDEEBDEE, 0xBDEEBDEE, - 0x00030003, 0x00010000, 0x00000000, 0x00010002, - 0x00030003, 0x00030002, 0x00010000, 0x00000000, - 0x00010002, 0x00030003, 0xEE13EBD9, 0xE6F2E20B, - 0xDFD1E146, 0xE4C2E8F1, 0xEC7DEE13, 0xECDCE9BB, - 0xE5F2E2C1, 0xE169E2BA, 0xE5DEE99E, 0xECC2EE13, - 0xBDEFBDEF, 0xBDEFBDEF, 0xBDEFBDEF, 0xBDEFBDEF, - 0xBDEFBDEF, 0xBDEFBDEF, 0xBDEEBDEE, 0xBDEEBDEE, - 0xBDEEBDEF, 0xBDEFBDEF, 0x80017FE2, 0x7F9D7F4C, - 0x7F077EEB, 0x7F167F75, 0x7FD38001, 0x7F9C7EB1, - 0x7D987CAD, 0x7C4A7CAD, 0x7D987EB1, 0x7F9C8001, - 0x86EF8604, 0x83B08092, 0x7D457A6F, 0x77A974AE, - 0x724D7154, 0x721C741B, 0x76CB79A7, 0x7C297EA9, - 0x8184842E, 0x862986EF, 0x0000FF30, 0xFD40FAF0, - 0xF900F830, 0xF969FC18, 0xFEC80000, 0xFFF6FFDC, - 0xFFBDFFA3, 0xFF98FFA3, 0xFFBDFFDC, 0xFFF60000, - 0x00000079, 0x01850291, 0x030B02C2, 0x02120137, - 0x00730003, 0x00020046, 0x00A800FF, 0x01250106, - 0x00BD0067, 0x001E0000, 0xEEE4EFBE, 0xF1DAF490, - 0xF737FA16, 0xFD7D00C6, 0x0352047B, 0x03E101F0, - 0xFF3CFC54, 0xF9CAF746, 0xF466F1B1, 0xEFAEEEE4, - 0x80017FE3, 0x7FA77F6B, 0x7F537F86, 0x7FF1805A, - 0x807E8026, 0x7EEF7D07, 0x7AF97954, 0x78A57966, - 0x7B397D66, 0x7F3A8001, 0x06E90627, 0x044F0209, - 0xFFFDFDFF, 0xFBBDF99E, 0xF80CF76F, 0xF813F9B3, - 0xFBDDFE1B, 0xFFFD01B2, 0x03890537, 0x067006E9, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x3EE53DF1, 0x3BD739BD, - 0x38C93968, 0x3AE43CAE, 0x3E333EE5, 0x3E6A3D22, - 0x3B933A41, 0x39B33A3E, 0x3B873D11, 0x3E5B3EE5, - 0xC0034004, 0xC003C001, 0x4004C001, 0x3FFD3FFA, - 0x3FFD4000, 0x3FFB4000, 0x3FFA3FFF, 0x3FFA0000, - 0x00010000, 0x00010001, 0x00010000, 0x00140002, - 0x00140016, 0x0014002A, 0x00010176, 0x00010177, - 0x00010178, 0x0014003E, 0x00140052, 0x00140066, - 0x00010173, 0x00010174, 0x00010175, 0x0014007A, - 0x0014008E, 0x001400A2, 0x00010170, 0x00010171, - 0x00010172, 0x001400B6, 0x001400CA, 0x001400DE, - 0x0001016D, 0x0001016E, 0x0001016F, 0x001400F2, - 0x00140106, 0x0014011A, 0x0001016A, 0x0001016B, - 0x0001016C, 0x0014012E, 0x00140142, 0x00140156, - 0x00010000, 0x00050000, 0x0013000B, 0x0600905C, - 0x06009350, 0x0000007B, 0x008E00B8, 0x00E200F5, - 0x00F000E5, 0x00D400C0, 0x00AA0092, 0x007C0067, - 0x004C0038, 0x003A0045, 0x004B0047, 0x003E0038, - 0x003B003E, 0x003B0037, 0x132613F0, 0x161B195E, - 0x1D6C21FA, 0x26BD2B6B, 0x3038362C, 0x3CA442E3, - 0x47CC4798, 0x440A4206, 0x405C3F8E, 0x3FB9406A, - 0x414E4214, 0x42684268, 0x42680000, 0x00AC0290, - 0x057D0944, 0x0DB4129D, 0x17D11D20, 0x2259274E, - 0x2BCE2FAB, 0x31ED32DE, 0x342C373C, 0x3A2A3A2D, - 0x383C36FF, 0x36FF36FF, 0x36FF36FF, 0x29F62A05, - 0x2A2A2A5F, 0x2A9B2AD8, 0x2B0D2B32, 0x2B402B2F, - 0x2AF82A92, 0x29F6277B, 0x23111F18, 0x1C7C1AA5, - 0x19AB1961, 0x19611961, 0x19611961, 0x1961BDF6, - 0xBDF9BE02, 0xBE0FBE1D, 0xBE2CBE39, 0xBE42BE45, - 0xBE41BE34, 0xBE1BBDF6, 0xBD03BB9A, 0xBB5BBE7B, - 0xC23DC1C1, 0xBE95BCA8, 0xBCA8BCA8, 0xBCA8BCA8, - 0x0003FF3A, 0xFD02F996, 0xF531F00D, 0xEA64E470, - 0xDE6BD890, 0xD318CE3E, 0xCA3CC922, 0xCA9FCB5E, - 0xC925C694, 0xC70BC974, 0xCAE7CAE7, 0xCAE7CAE7, - 0xCAE7D4D1, 0xD4C2D49C, 0xD465D427, 0xD3E9D3B2, - 0xD38CD37D, 0xD38FD3C8, 0xD430D4D1, 0xD760DBED, - 0xDFFFE296, 0xE463E57A, 0xE5F9E617, 0xE617E617, - 0xE617E617, 0xBDEDBDF2, 0xBE01BE16, 0xBE2EBE45, - 0xBE5ABE69, 0xBE6EBE68, 0xBE52BE2A, 0xBDEDBC7C, - 0xBA48B9A9, 0xBD97C272, 0xC1DFBDDF, 0xBB70BB70, - 0xBB70BB70, 0xBB708001, 0x80010BD0, 0x11931E99, - 0x2C8134E7, 0x379238C5, 0x38DA382D, 0x371935F9, - 0x352934F7, 0x34F734F7, 0x34F734F7, 0x34F734F7, - 0x34F734F7, 0x34F734F7, 0x34F734F7, 0x8BD2916A, - 0x9E16ABAA, 0xB3FAB6D3, 0xB852B8C5, 0xB87DB7C9, - 0xB6F8B659, 0xB632B632, 0xB632B632, 0xB632B632, - 0xB632B632, 0xB632B632, 0xB632B632, 0xB63227AC, - 0x273625F0, 0x23FF218B, 0x1EBB1BB5, 0x18A215A7, - 0x12EC1099, 0x0ED30E0E, 0x118A16DC, 0x19D217C3, - 0x135C1063, 0x10461148, 0x127512D8, 0x108B0E69, - 0xC0034004, 0xC003C001, 0x4004C001, 0x3FFD3FFA, - 0x3FFD4000, 0x3FFB4000, 0x3FFA3FFF, 0x3FFA0000, - 0x00010000, 0x00190001, 0x00010000, 0x0019001A, - 0x00010000, 0x00010000, 0x00010122, 0x00010123, - 0x00010124, 0x00190033, 0x0019004C, 0x00190065, - 0x0001011F, 0x00010120, 0x00010121, 0x0019007E, - 0x00190097, 0x001900B0, 0x0001011C, 0x0001011D, - 0x0001011E, 0x000100C9, 0x000100CA, 0x001900CB, - 0x00010119, 0x0001011A, 0x0001011B, 0x00010000, - 0x00010000, 0x001900E4, 0x00010116, 0x00010117, - 0x00010118, 0x00010000, 0x00010000, 0x001900FD, - 0x00000000, 0x00000000, 0x0019000B, 0x060093F4, - 0x06009640, 0x00000037, 0x00460057, 0x00680078, - 0x00870091, 0x00980096, 0x008C007E, 0x006F0062, - 0x00560049, 0x00410040, 0x00430045, 0x00460047, - 0x00470047, 0x00460046, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x0000FFFF, 0xFFFFFFFF, - 0x00000004, 0x000C0011, 0x0010000B, 0x00060000, - 0xFFFCFFFC, 0xFFFDFFFF, 0x00004268, 0x40413A62, - 0x31B22713, 0x1B6C0FA1, 0x0496FB32, 0xF456F1D7, - 0xF39DF7B4, 0xFC25040B, 0x0A0108D9, 0x05E80238, - 0xFED2FCBE, 0xFC9EFDBF, 0xFF2FFFFE, 0x36FF2C2E, - 0x1695067A, 0xFEF3F8DD, 0xF533F4EF, 0xF90C07AF, - 0x1F54356D, 0x3F6A3E8C, 0x3B633663, 0x2FFD28A4, - 0x20C918DF, 0x11580AA5, 0x053B0189, 0x00041961, - 0x1812153E, 0x128C0FBF, 0x0C450940, 0x07CF0914, - 0x10261BDD, 0x27012C56, 0x2C742B8D, 0x29D22774, - 0x24A42191, 0x1E6D1B69, 0x18B51682, 0x15001460, - 0xBCA8B8C3, 0xB038A7BB, 0x9EA89376, 0x8982842A, - 0x86CC9A0D, 0xBAB2DA3E, 0xEA38EC31, 0xEBADE91E, - 0xE4F1DF98, 0xD982D31F, 0xCCDFC731, 0xC285BF4B, - 0xBDF3CAE7, 0xD562EA5D, 0xFA290219, 0x09010D73, - 0x0DFF0938, 0xF7E4DC00, 0xC1F1B620, 0xB715BAB9, - 0xC087C7FA, 0xD08BD9B5, 0xE2F2EBBC, 0xF38FF9E3, - 0xFE34FFFC, 0xE617E87D, 0xED4CF0EC, 0xF304F525, - 0xF694F695, 0xF46CED5B, 0xE246D7E9, 0xD2FFD2F0, - 0xD3DAD58F, 0xD7E1DAA0, 0xDD9DE0A9, 0xE397E635, - 0xE857E9CC, 0xEA67BB70, 0xB68FAC17, 0xA2499896, - 0x8CC08282, 0x7D9481BC, 0x9908BFC1, 0xE4EAF785, - 0xF97FF871, 0xF4E6EF67, 0xE87FE0B8, 0xD89CD0B5, - 0xC98DC3AE, 0xBFA2BDF3, 0x80017FF4, 0x7FD77FAC, - 0x7F747F34, 0x7EEF7EA8, 0x7E637E23, 0x7DEB7DBE, - 0x7DA17DA1, 0x7DC67E02, 0x7E4C7E97, 0x7F0C7FA3, - 0x800D8029, 0x8023800F, 0x80028001, 0x7FC17F15, - 0x7E0F7CC3, 0x7B4579A9, 0x78037667, 0x74E9739D, - 0x729871ED, 0x720E731E, 0x74B97679, 0x77FB7981, - 0x7B3D7CAF, 0x7DD57EE0, 0x7FA67FFE, 0x34F733F6, - 0x31272CD9, 0x275720F0, 0x19F112A8, 0x0B62046D, - 0xFE17F8AB, 0xF479F275, 0xF2C9F496, 0xF6FAF916, - 0xFC240040, 0x02D902FC, 0x01FF00B9, 0x00020000, - 0x0003000C, 0x001A002C, 0x00410057, 0x006E0084, - 0x009800AA, 0x00B800C1, 0x00AD007E, 0x005C006E, - 0x00730029, 0xFFC5FF89, 0xFF91FFBA, 0xFFE80000, - 0x0000FFD0, 0xFF4AFE7B, 0xFD73FC3F, 0xFAEEF98F, - 0xF82FF6DE, 0xF5A9F49E, 0xF3CDF3CF, 0xF4B9F5D1, - 0xF748F8F4, 0xFA6FFBF5, 0xFD35FE32, 0xFF14FFB8, - 0x0000B632, 0xB512B1EC, 0xAD14A6E1, 0x9FA697B8, - 0x8F6E871B, 0x7F1377AF, 0x71436C22, 0x6C0E70F1, - 0x755D773F, 0x792C7C94, 0x808382EA, 0x83098207, - 0x80BD8004, 0x0E69101E, 0x14BA1B78, 0x23962C4E, - 0x34DE3C80, 0x427245EE, 0x4796489B, 0x4911490A, - 0x489C47D9, 0x46D645A6, 0x445C430E, 0x41CD40AF, - 0x3FC73F28, 0x3EE6C003, 0x4004C003, 0xC0014004, - 0xC0013FFD, 0x3FFA3FFD, 0x40003FFB, 0x40003FFA, - 0x3FFF3FFA, 0x00010000, 0x00190001, 0x0019001A, - 0x00190033, 0x00010000, 0x00010000, 0x0001019D, - 0x0001019E, 0x0001019F, 0x0019004C, 0x00190065, - 0x0019007E, 0x0001019A, 0x0001019B, 0x0001019C, - 0x00190097, 0x001900B0, 0x001900C9, 0x00010197, - 0x00010198, 0x00010199, 0x001900E2, 0x001900FB, - 0x00190114, 0x00010194, 0x00010195, 0x00010196, - 0x0019012D, 0x00190146, 0x0019015F, 0x00010191, - 0x00010192, 0x00010193, 0x00010000, 0x00010000, - 0x00190178, 0x00000000, 0x00000000, 0x0019000B, - 0x060096E4, 0x06009A24, 0x060093E0, 0x060096D0, - 0x06009AB4, 0x00000000, 0x00000000, 0x00000001, - 0x00000000, 0x00000001 +// 0x06008EB0 +u32 d_course_sherbet_land_unk_data1[] = { + 0x00000001, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + 0x06008D00, + 0x00000000, + 0x00000000, + 0x00000000, + + 0x00000001, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + 0x00000000, + 0xFFFFFFCD, + 0x00000054, + 0xFFFFFFF3, + + 0x00000001, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + 0x06008730, + 0x00000000, + 0x00000000, + 0x00000000, + + 0x00000002, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + 0x00000000, + 0x00000033, + 0x00000054, + 0xFFFFFFF3, + + 0x00000001, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + 0x06008808, + 0x00000000, + 0x00000000, + 0x00000000, + + 0x00000002, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + 0x00000000, + 0xFFFFFFDA, + 0xFFFFFFCA, + 0xFFFFFFF3, + + 0x00000001, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + 0x06008930, + 0x00000000, + 0x00000000, + 0x00000000, + + 0x00000002, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + 0x00000000, + 0x00000026, + 0xFFFFFFCA, + 0xFFFFFFF3, + + 0x00000001, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + 0x06008A78, + 0x00000000, + 0x00000000, + 0x00000000, + + 0x00000002, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + 0x00000000, + 0x00000000, + 0x0000006F, + 0xFFFFFFED, + + 0x00000001, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + 0x06008E00, + 0x00000000, + 0x00000000, + 0x00000000, + + 0x00000002, + 0x00000002, + + 0x00000002, + 0x00000002, + + 0x00000002, + 0x00000002, + + 0x00000003, + 0x00000002, +}; + +// 0x0600905C +s16 d_course_sherbet_land_unk_data2[] = { + 0x0000, 0x0046, + 0x0005, 0x000C, + 0x001B, 0x002B, + 0x0031, 0x002D, + 0x0023, 0x0016, + 0x0009, 0x0000, + 0xFFF9, 0xFFF2, + 0xFFEC, 0xFFE8, + 0xFFE7, 0xFFEA, + 0xFFF2, 0xFFFB, + 0x0001, 0x0005, + 0xF156, 0xF29E, + 0xF5C2, 0xF9B3, + 0xFD64, 0x012B, + 0x058E, 0x09BC, + 0x0CE5, 0x0E38, + 0x0D2A, 0x0A45, + 0x065C, 0x0241, + 0xFEC7, 0xFB88, + 0xF7F7, 0xF4AE, + 0xF245, 0xF156, + 0x0005, 0xFF93, + 0xFE97, 0xFD9B, + 0xFD28, 0xFD59, + 0xFDDA, 0xFE8B, + 0xFF4C, 0x0000, + 0x00C5, 0x01B1, + 0x0293, 0x033E, + 0x0382, 0x0325, + 0x0248, 0x013F, + 0x0062, 0x0005, + 0x0005, 0x0005, + 0x0006, 0x0006, + 0x0007, 0x0007, + 0x0006, 0x0006, + 0x0005, 0x0005, + 0x0004, 0x0004, + 0x0003, 0x0003, + 0x0003, 0x0003, + 0x0004, 0x0004, + 0x0004, 0x0005, + 0x14C7, 0x16B0, + 0x1AE3, 0x1F17, + 0x2100, 0x1FC7, + 0x1CD8, 0x194D, + 0x163E, 0x14C7, + 0x1589, 0x17C9, + 0x1A92, 0x1CF1, + 0x1DF2, 0x1CFE, + 0x1AB8, 0x1801, + 0x15BB, 0x14C7, + 0xBDEE, 0xBDEE, + 0xBDEE, 0xBDEF, + 0xBDEF, 0xBDEF, + 0xBDEF, 0xBDEE, + 0xBDEE, 0xBDEE, + 0xBDEE, 0xBDEE, + 0xBDEE, 0xBDEE, + 0xBDEE, 0xBDEE, + 0xBDEE, 0xBDEE, + 0xBDEE, 0xBDEE, + 0x0003, 0x0003, + 0x0001, 0x0000, + 0x0000, 0x0000, + 0x0001, 0x0002, + 0x0003, 0x0003, + 0x0003, 0x0002, + 0x0001, 0x0000, + 0x0000, 0x0000, + 0x0001, 0x0002, + 0x0003, 0x0003, + 0xEE13, 0xEBD9, + 0xE6F2, 0xE20B, + 0xDFD1, 0xE146, + 0xE4C2, 0xE8F1, + 0xEC7D, 0xEE13, + 0xECDC, 0xE9BB, + 0xE5F2, 0xE2C1, + 0xE169, 0xE2BA, + 0xE5DE, 0xE99E, + 0xECC2, 0xEE13, + 0xBDEF, 0xBDEF, + 0xBDEF, 0xBDEF, + 0xBDEF, 0xBDEF, + 0xBDEF, 0xBDEF, + 0xBDEF, 0xBDEF, + 0xBDEF, 0xBDEF, + 0xBDEE, 0xBDEE, + 0xBDEE, 0xBDEE, + 0xBDEE, 0xBDEF, + 0xBDEF, 0xBDEF, + 0x8001, 0x7FE2, + 0x7F9D, 0x7F4C, + 0x7F07, 0x7EEB, + 0x7F16, 0x7F75, + 0x7FD3, 0x8001, + 0x7F9C, 0x7EB1, + 0x7D98, 0x7CAD, + 0x7C4A, 0x7CAD, + 0x7D98, 0x7EB1, + 0x7F9C, 0x8001, + 0x86EF, 0x8604, + 0x83B0, 0x8092, + 0x7D45, 0x7A6F, + 0x77A9, 0x74AE, + 0x724D, 0x7154, + 0x721C, 0x741B, + 0x76CB, 0x79A7, + 0x7C29, 0x7EA9, + 0x8184, 0x842E, + 0x8629, 0x86EF, + 0x0000, 0xFF30, + 0xFD40, 0xFAF0, + 0xF900, 0xF830, + 0xF969, 0xFC18, + 0xFEC8, 0x0000, + 0xFFF6, 0xFFDC, + 0xFFBD, 0xFFA3, + 0xFF98, 0xFFA3, + 0xFFBD, 0xFFDC, + 0xFFF6, 0x0000, + 0x0000, 0x0079, + 0x0185, 0x0291, + 0x030B, 0x02C2, + 0x0212, 0x0137, + 0x0073, 0x0003, + 0x0002, 0x0046, + 0x00A8, 0x00FF, + 0x0125, 0x0106, + 0x00BD, 0x0067, + 0x001E, 0x0000, + 0xEEE4, 0xEFBE, + 0xF1DA, 0xF490, + 0xF737, 0xFA16, + 0xFD7D, 0x00C6, + 0x0352, 0x047B, + 0x03E1, 0x01F0, + 0xFF3C, 0xFC54, + 0xF9CA, 0xF746, + 0xF466, 0xF1B1, + 0xEFAE, 0xEEE4, + 0x8001, 0x7FE3, + 0x7FA7, 0x7F6B, + 0x7F53, 0x7F86, + 0x7FF1, 0x805A, + 0x807E, 0x8026, + 0x7EEF, 0x7D07, + 0x7AF9, 0x7954, + 0x78A5, 0x7966, + 0x7B39, 0x7D66, + 0x7F3A, 0x8001, + 0x06E9, 0x0627, + 0x044F, 0x0209, + 0xFFFD, 0xFDFF, + 0xFBBD, 0xF99E, + 0xF80C, 0xF76F, + 0xF813, 0xF9B3, + 0xFBDD, 0xFE1B, + 0xFFFD, 0x01B2, + 0x0389, 0x0537, + 0x0670, 0x06E9, + 0x0000, 0x0000, + 0x0000, 0x0000, + 0x0000, 0x0000, + 0x0000, 0x0000, + 0x0000, 0x0000, + 0x0000, 0x0000, + 0x0000, 0x0000, + 0x0000, 0x0000, + 0x0000, 0x0000, + 0x0000, 0x0000, + 0x3EE5, 0x3DF1, + 0x3BD7, 0x39BD, + 0x38C9, 0x3968, + 0x3AE4, 0x3CAE, + 0x3E33, 0x3EE5, + 0x3E6A, 0x3D22, + 0x3B93, 0x3A41, + 0x39B3, 0x3A3E, + 0x3B87, 0x3D11, + 0x3E5B, 0x3EE5, + 0xC003, 0x4004, + 0xC003, 0xC001, + 0x4004, 0xC001, + 0x3FFD, 0x3FFA, + 0x3FFD, 0x4000, + 0x3FFB, 0x4000, + 0x3FFA, 0x3FFF, + 0x3FFA, 0x0000, +}; + +// 0x06009350 +animation_type_3_triplet d_course_sherbet_land_unk_data3[] = { + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0001 }, + { 0x0001, 0x0000 }, + }, + { + { 0x0014, 0x0002 }, + { 0x0014, 0x0016 }, + { 0x0014, 0x002A }, + }, + { + { 0x0001, 0x0176 }, + { 0x0001, 0x0177 }, + { 0x0001, 0x0178 }, + }, + { + { 0x0014, 0x003E }, + { 0x0014, 0x0052 }, + { 0x0014, 0x0066 }, + }, + { + { 0x0001, 0x0173 }, + { 0x0001, 0x0174 }, + { 0x0001, 0x0175 }, + }, + { + { 0x0014, 0x007A }, + { 0x0014, 0x008E }, + { 0x0014, 0x00A2 }, + }, + { + { 0x0001, 0x0170 }, + { 0x0001, 0x0171 }, + { 0x0001, 0x0172 }, + }, + { + { 0x0014, 0x00B6 }, + { 0x0014, 0x00CA }, + { 0x0014, 0x00DE }, + }, + { + { 0x0001, 0x016D }, + { 0x0001, 0x016E }, + { 0x0001, 0x016F }, + }, + { + { 0x0014, 0x00F2 }, + { 0x0014, 0x0106 }, + { 0x0014, 0x011A }, + }, + { + { 0x0001, 0x016A }, + { 0x0001, 0x016B }, + { 0x0001, 0x016C }, + }, + { + { 0x0014, 0x012E }, + { 0x0014, 0x0142 }, + { 0x0014, 0x0156 }, + }, +}; + +// 0x060093E0 +animation_type_2 d_course_sherbet_land_unk_data4 = { + 0x00010000, + 0x00050000, + 0x0013, + 0x000B, + d_course_sherbet_land_unk_data2, + d_course_sherbet_land_unk_data3, +}; + +// 0x060093F4 +s16 d_course_sherbet_land_unk_data5[] = { + 0x0000, 0x007B, + 0x008E, 0x00B8, + 0x00E2, 0x00F5, + 0x00F0, 0x00E5, + 0x00D4, 0x00C0, + 0x00AA, 0x0092, + 0x007C, 0x0067, + 0x004C, 0x0038, + 0x003A, 0x0045, + 0x004B, 0x0047, + 0x003E, 0x0038, + 0x003B, 0x003E, + 0x003B, 0x0037, + 0x1326, 0x13F0, + 0x161B, 0x195E, + 0x1D6C, 0x21FA, + 0x26BD, 0x2B6B, + 0x3038, 0x362C, + 0x3CA4, 0x42E3, + 0x47CC, 0x4798, + 0x440A, 0x4206, + 0x405C, 0x3F8E, + 0x3FB9, 0x406A, + 0x414E, 0x4214, + 0x4268, 0x4268, + 0x4268, 0x0000, + 0x00AC, 0x0290, + 0x057D, 0x0944, + 0x0DB4, 0x129D, + 0x17D1, 0x1D20, + 0x2259, 0x274E, + 0x2BCE, 0x2FAB, + 0x31ED, 0x32DE, + 0x342C, 0x373C, + 0x3A2A, 0x3A2D, + 0x383C, 0x36FF, + 0x36FF, 0x36FF, + 0x36FF, 0x36FF, + 0x29F6, 0x2A05, + 0x2A2A, 0x2A5F, + 0x2A9B, 0x2AD8, + 0x2B0D, 0x2B32, + 0x2B40, 0x2B2F, + 0x2AF8, 0x2A92, + 0x29F6, 0x277B, + 0x2311, 0x1F18, + 0x1C7C, 0x1AA5, + 0x19AB, 0x1961, + 0x1961, 0x1961, + 0x1961, 0x1961, + 0x1961, 0xBDF6, + 0xBDF9, 0xBE02, + 0xBE0F, 0xBE1D, + 0xBE2C, 0xBE39, + 0xBE42, 0xBE45, + 0xBE41, 0xBE34, + 0xBE1B, 0xBDF6, + 0xBD03, 0xBB9A, + 0xBB5B, 0xBE7B, + 0xC23D, 0xC1C1, + 0xBE95, 0xBCA8, + 0xBCA8, 0xBCA8, + 0xBCA8, 0xBCA8, + 0x0003, 0xFF3A, + 0xFD02, 0xF996, + 0xF531, 0xF00D, + 0xEA64, 0xE470, + 0xDE6B, 0xD890, + 0xD318, 0xCE3E, + 0xCA3C, 0xC922, + 0xCA9F, 0xCB5E, + 0xC925, 0xC694, + 0xC70B, 0xC974, + 0xCAE7, 0xCAE7, + 0xCAE7, 0xCAE7, + 0xCAE7, 0xD4D1, + 0xD4C2, 0xD49C, + 0xD465, 0xD427, + 0xD3E9, 0xD3B2, + 0xD38C, 0xD37D, + 0xD38F, 0xD3C8, + 0xD430, 0xD4D1, + 0xD760, 0xDBED, + 0xDFFF, 0xE296, + 0xE463, 0xE57A, + 0xE5F9, 0xE617, + 0xE617, 0xE617, + 0xE617, 0xE617, + 0xBDED, 0xBDF2, + 0xBE01, 0xBE16, + 0xBE2E, 0xBE45, + 0xBE5A, 0xBE69, + 0xBE6E, 0xBE68, + 0xBE52, 0xBE2A, + 0xBDED, 0xBC7C, + 0xBA48, 0xB9A9, + 0xBD97, 0xC272, + 0xC1DF, 0xBDDF, + 0xBB70, 0xBB70, + 0xBB70, 0xBB70, + 0xBB70, 0x8001, + 0x8001, 0x0BD0, + 0x1193, 0x1E99, + 0x2C81, 0x34E7, + 0x3792, 0x38C5, + 0x38DA, 0x382D, + 0x3719, 0x35F9, + 0x3529, 0x34F7, + 0x34F7, 0x34F7, + 0x34F7, 0x34F7, + 0x34F7, 0x34F7, + 0x34F7, 0x34F7, + 0x34F7, 0x34F7, + 0x34F7, 0x34F7, + 0x8BD2, 0x916A, + 0x9E16, 0xABAA, + 0xB3FA, 0xB6D3, + 0xB852, 0xB8C5, + 0xB87D, 0xB7C9, + 0xB6F8, 0xB659, + 0xB632, 0xB632, + 0xB632, 0xB632, + 0xB632, 0xB632, + 0xB632, 0xB632, + 0xB632, 0xB632, + 0xB632, 0xB632, + 0xB632, 0x27AC, + 0x2736, 0x25F0, + 0x23FF, 0x218B, + 0x1EBB, 0x1BB5, + 0x18A2, 0x15A7, + 0x12EC, 0x1099, + 0x0ED3, 0x0E0E, + 0x118A, 0x16DC, + 0x19D2, 0x17C3, + 0x135C, 0x1063, + 0x1046, 0x1148, + 0x1275, 0x12D8, + 0x108B, 0x0E69, + 0xC003, 0x4004, + 0xC003, 0xC001, + 0x4004, 0xC001, + 0x3FFD, 0x3FFA, + 0x3FFD, 0x4000, + 0x3FFB, 0x4000, + 0x3FFA, 0x3FFF, + 0x3FFA, 0x0000, +}; + +// 0x06009640 +animation_type_3_triplet d_course_sherbet_land_unk_data6[] = { + { + { 0x0001, 0x0000 }, + { 0x0019, 0x0001 }, + { 0x0001, 0x0000 }, + }, + { + { 0x0019, 0x001A }, + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + }, + { + { 0x0001, 0x0122 }, + { 0x0001, 0x0123 }, + { 0x0001, 0x0124 }, + }, + { + { 0x0019, 0x0033 }, + { 0x0019, 0x004C }, + { 0x0019, 0x0065 }, + }, + { + { 0x0001, 0x011F }, + { 0x0001, 0x0120 }, + { 0x0001, 0x0121 }, + }, + { + { 0x0019, 0x007E }, + { 0x0019, 0x0097 }, + { 0x0019, 0x00B0 }, + }, + { + { 0x0001, 0x011C }, + { 0x0001, 0x011D }, + { 0x0001, 0x011E }, + }, + { + { 0x0001, 0x00C9 }, + { 0x0001, 0x00CA }, + { 0x0019, 0x00CB }, + }, + { + { 0x0001, 0x0119 }, + { 0x0001, 0x011A }, + { 0x0001, 0x011B }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + { 0x0019, 0x00E4 }, + }, + { + { 0x0001, 0x0116 }, + { 0x0001, 0x0117 }, + { 0x0001, 0x0118 }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + { 0x0019, 0x00FD }, + }, +}; + +// 0x060096D0 +animation_type_2 d_course_sherbet_land_unk_data7 = { + 0x00000000, + 0x00000000, + 0x0019, + 0x000B, + d_course_sherbet_land_unk_data5, + d_course_sherbet_land_unk_data6, +}; + +// 0x060096E4 +s16 d_course_sherbet_land_unk_data8[] = { + 0x0000, 0x0037, + 0x0046, 0x0057, + 0x0068, 0x0078, + 0x0087, 0x0091, + 0x0098, 0x0096, + 0x008C, 0x007E, + 0x006F, 0x0062, + 0x0056, 0x0049, + 0x0041, 0x0040, + 0x0043, 0x0045, + 0x0046, 0x0047, + 0x0047, 0x0047, + 0x0046, 0x0046, + 0x0000, 0x0000, + 0x0000, 0x0000, + 0x0000, 0x0000, + 0x0000, 0x0000, + 0x0000, 0xFFFF, + 0xFFFF, 0xFFFF, + 0x0000, 0x0004, + 0x000C, 0x0011, + 0x0010, 0x000B, + 0x0006, 0x0000, + 0xFFFC, 0xFFFC, + 0xFFFD, 0xFFFF, + 0x0000, 0x4268, + 0x4041, 0x3A62, + 0x31B2, 0x2713, + 0x1B6C, 0x0FA1, + 0x0496, 0xFB32, + 0xF456, 0xF1D7, + 0xF39D, 0xF7B4, + 0xFC25, 0x040B, + 0x0A01, 0x08D9, + 0x05E8, 0x0238, + 0xFED2, 0xFCBE, + 0xFC9E, 0xFDBF, + 0xFF2F, 0xFFFE, + 0x36FF, 0x2C2E, + 0x1695, 0x067A, + 0xFEF3, 0xF8DD, + 0xF533, 0xF4EF, + 0xF90C, 0x07AF, + 0x1F54, 0x356D, + 0x3F6A, 0x3E8C, + 0x3B63, 0x3663, + 0x2FFD, 0x28A4, + 0x20C9, 0x18DF, + 0x1158, 0x0AA5, + 0x053B, 0x0189, + 0x0004, 0x1961, + 0x1812, 0x153E, + 0x128C, 0x0FBF, + 0x0C45, 0x0940, + 0x07CF, 0x0914, + 0x1026, 0x1BDD, + 0x2701, 0x2C56, + 0x2C74, 0x2B8D, + 0x29D2, 0x2774, + 0x24A4, 0x2191, + 0x1E6D, 0x1B69, + 0x18B5, 0x1682, + 0x1500, 0x1460, + 0xBCA8, 0xB8C3, + 0xB038, 0xA7BB, + 0x9EA8, 0x9376, + 0x8982, 0x842A, + 0x86CC, 0x9A0D, + 0xBAB2, 0xDA3E, + 0xEA38, 0xEC31, + 0xEBAD, 0xE91E, + 0xE4F1, 0xDF98, + 0xD982, 0xD31F, + 0xCCDF, 0xC731, + 0xC285, 0xBF4B, + 0xBDF3, 0xCAE7, + 0xD562, 0xEA5D, + 0xFA29, 0x0219, + 0x0901, 0x0D73, + 0x0DFF, 0x0938, + 0xF7E4, 0xDC00, + 0xC1F1, 0xB620, + 0xB715, 0xBAB9, + 0xC087, 0xC7FA, + 0xD08B, 0xD9B5, + 0xE2F2, 0xEBBC, + 0xF38F, 0xF9E3, + 0xFE34, 0xFFFC, + 0xE617, 0xE87D, + 0xED4C, 0xF0EC, + 0xF304, 0xF525, + 0xF694, 0xF695, + 0xF46C, 0xED5B, + 0xE246, 0xD7E9, + 0xD2FF, 0xD2F0, + 0xD3DA, 0xD58F, + 0xD7E1, 0xDAA0, + 0xDD9D, 0xE0A9, + 0xE397, 0xE635, + 0xE857, 0xE9CC, + 0xEA67, 0xBB70, + 0xB68F, 0xAC17, + 0xA249, 0x9896, + 0x8CC0, 0x8282, + 0x7D94, 0x81BC, + 0x9908, 0xBFC1, + 0xE4EA, 0xF785, + 0xF97F, 0xF871, + 0xF4E6, 0xEF67, + 0xE87F, 0xE0B8, + 0xD89C, 0xD0B5, + 0xC98D, 0xC3AE, + 0xBFA2, 0xBDF3, + 0x8001, 0x7FF4, + 0x7FD7, 0x7FAC, + 0x7F74, 0x7F34, + 0x7EEF, 0x7EA8, + 0x7E63, 0x7E23, + 0x7DEB, 0x7DBE, + 0x7DA1, 0x7DA1, + 0x7DC6, 0x7E02, + 0x7E4C, 0x7E97, + 0x7F0C, 0x7FA3, + 0x800D, 0x8029, + 0x8023, 0x800F, + 0x8002, 0x8001, + 0x7FC1, 0x7F15, + 0x7E0F, 0x7CC3, + 0x7B45, 0x79A9, + 0x7803, 0x7667, + 0x74E9, 0x739D, + 0x7298, 0x71ED, + 0x720E, 0x731E, + 0x74B9, 0x7679, + 0x77FB, 0x7981, + 0x7B3D, 0x7CAF, + 0x7DD5, 0x7EE0, + 0x7FA6, 0x7FFE, + 0x34F7, 0x33F6, + 0x3127, 0x2CD9, + 0x2757, 0x20F0, + 0x19F1, 0x12A8, + 0x0B62, 0x046D, + 0xFE17, 0xF8AB, + 0xF479, 0xF275, + 0xF2C9, 0xF496, + 0xF6FA, 0xF916, + 0xFC24, 0x0040, + 0x02D9, 0x02FC, + 0x01FF, 0x00B9, + 0x0002, 0x0000, + 0x0003, 0x000C, + 0x001A, 0x002C, + 0x0041, 0x0057, + 0x006E, 0x0084, + 0x0098, 0x00AA, + 0x00B8, 0x00C1, + 0x00AD, 0x007E, + 0x005C, 0x006E, + 0x0073, 0x0029, + 0xFFC5, 0xFF89, + 0xFF91, 0xFFBA, + 0xFFE8, 0x0000, + 0x0000, 0xFFD0, + 0xFF4A, 0xFE7B, + 0xFD73, 0xFC3F, + 0xFAEE, 0xF98F, + 0xF82F, 0xF6DE, + 0xF5A9, 0xF49E, + 0xF3CD, 0xF3CF, + 0xF4B9, 0xF5D1, + 0xF748, 0xF8F4, + 0xFA6F, 0xFBF5, + 0xFD35, 0xFE32, + 0xFF14, 0xFFB8, + 0x0000, 0xB632, + 0xB512, 0xB1EC, + 0xAD14, 0xA6E1, + 0x9FA6, 0x97B8, + 0x8F6E, 0x871B, + 0x7F13, 0x77AF, + 0x7143, 0x6C22, + 0x6C0E, 0x70F1, + 0x755D, 0x773F, + 0x792C, 0x7C94, + 0x8083, 0x82EA, + 0x8309, 0x8207, + 0x80BD, 0x8004, + 0x0E69, 0x101E, + 0x14BA, 0x1B78, + 0x2396, 0x2C4E, + 0x34DE, 0x3C80, + 0x4272, 0x45EE, + 0x4796, 0x489B, + 0x4911, 0x490A, + 0x489C, 0x47D9, + 0x46D6, 0x45A6, + 0x445C, 0x430E, + 0x41CD, 0x40AF, + 0x3FC7, 0x3F28, + 0x3EE6, 0xC003, + 0x4004, 0xC003, + 0xC001, 0x4004, + 0xC001, 0x3FFD, + 0x3FFA, 0x3FFD, + 0x4000, 0x3FFB, + 0x4000, 0x3FFA, + 0x3FFF, 0x3FFA, +}; + +// 0x06009A24 +animation_type_3_triplet d_course_sherbet_land_unk_data9[] = { + { + { 0x0001, 0x0000 }, + { 0x0019, 0x0001 }, + { 0x0019, 0x001A }, + }, + { + { 0x0019, 0x0033 }, + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + }, + { + { 0x0001, 0x019D }, + { 0x0001, 0x019E }, + { 0x0001, 0x019F }, + }, + { + { 0x0019, 0x004C }, + { 0x0019, 0x0065 }, + { 0x0019, 0x007E }, + }, + { + { 0x0001, 0x019A }, + { 0x0001, 0x019B }, + { 0x0001, 0x019C }, + }, + { + { 0x0019, 0x0097 }, + { 0x0019, 0x00B0 }, + { 0x0019, 0x00C9 }, + }, + { + { 0x0001, 0x0197 }, + { 0x0001, 0x0198 }, + { 0x0001, 0x0199 }, + }, + { + { 0x0019, 0x00E2 }, + { 0x0019, 0x00FB }, + { 0x0019, 0x0114 }, + }, + { + { 0x0001, 0x0194 }, + { 0x0001, 0x0195 }, + { 0x0001, 0x0196 }, + }, + { + { 0x0019, 0x012D }, + { 0x0019, 0x0146 }, + { 0x0019, 0x015F }, + }, + { + { 0x0001, 0x0191 }, + { 0x0001, 0x0192 }, + { 0x0001, 0x0193 }, + }, + { + { 0x0001, 0x0000 }, + { 0x0001, 0x0000 }, + { 0x0019, 0x0178 }, + }, +}; + +// 0x06009AB4 +animation_type_2 d_course_sherbet_land_unk_data10 = { + 0x00000000, + 0x00000000, + 0x0019, + 0x000B, + d_course_sherbet_land_unk_data8, + d_course_sherbet_land_unk_data9, +}; + +// 0x06009AC8 +animation_type_2 *d_course_sherbet_land_unk_data11[] = { + &d_course_sherbet_land_unk_data4, + &d_course_sherbet_land_unk_data7, + &d_course_sherbet_land_unk_data10, +}; + +// No idea what this stuff is +u32 d_course_sherbet_land_unk_data12[] = { + 0x00000000, + 0x00000000, + 0x00000001, + 0x00000000, + 0x00000001 }; Gfx d_course_sherbet_land_dl_9AE8[] = diff --git a/src/code_80004740.c b/src/code_80004740.c index b802d2a26..90179e011 100644 --- a/src/code_80004740.c +++ b/src/code_80004740.c @@ -5,6 +5,9 @@ #include "math_util.h" #include "code_80004740.h" #include "memory.h" +#include +#include +#include Vec3s D_80162D70; s16 D_80162D76; @@ -62,211 +65,134 @@ void func_800048D8(Mat4 dest, Vec3f b, Vec3s c) { dest[3][3] = 1.0f; } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -extern ? D_80162D70; -extern s16 D_80162D76; -extern s16 D_80162D7A; - -void func_80004A1C(void *arg0, s32 arg1, void *arg2, s32 arg3) { - f32 sp94; - ? sp92; - s16 sp8C; - u32 sp3C; - Gfx *temp_v1; - Gfx *temp_v1_2; - f32 *var_v0; - f32 *var_v0_2; - f32 temp_f18; - s16 *var_v1_3; - s16 temp_t0; - s16 temp_t3; - s16 var_t9; - s32 temp_v0; - s32 var_a0_2; - s32 var_t4; - s32 var_t8; - void *var_a0; - void *var_v0_3; - void *var_v1; - void *var_v1_2; - - temp_t0 = D_80162D76; - sp3C = arg0->unkC; - if (temp_t0 == 0) { - var_v1 = arg0; - var_v0 = &sp94; - var_a0 = &D_80162D70 + 2; - var_t9 = var_a0->unk-2; - var_t8 = var_v1->unk10; - if (var_a0 != &D_80162D76) { - do { - var_a0 += 2; - var_v0 += 4; - temp_f18 = (f32) (var_t8 + var_t9); - var_v1 += 4; - var_t9 = var_a0->unk-2; - var_v0->unk-4 = temp_f18; - var_t8 = var_v1->unk10; - } while (var_a0 != &D_80162D76); +#if 1 +/* +https://decomp.me/scratch/v615X +Leaving this as non-matching due to all the animation stuff being in flux +But, as stuff currently stands, it is technically matching +*/ +void func_80004A1C(animation_type_1 *arg0, s16 *arg1, animation_type_3_triplet arg2, s32 arg3) { + Vec3f sp94; + Vec3s sp8C; + Mat4 sp4C; + s32 someIndex; + s32 some_offset; + Gfx *some_dl; + Gfx *some_segmented_dl; + some_segmented_dl = arg0->optional_segmented_dl_address; + if (D_80162D76 == 0) { + for (someIndex = 0; someIndex < 3; someIndex++) { + sp94[someIndex] = D_80162D70[someIndex] + arg0->thing[someIndex]; } - (var_v0 + 4)->unk-4 = (f32) (var_t8 + var_t9); - D_80162D76 = temp_t0 + 1; + D_80162D76 += 1; } else { - var_v1_2 = arg0; - var_v0_2 = &sp94 + 4; - var_t4 = var_v1_2->unk10; - if (var_v0_2 != &arg0) { - do { - var_v0_2 += 4; - var_v1_2 += 4; - var_v0_2->unk-8 = (f32) var_t4; - var_t4 = var_v1_2->unk10; - } while (var_v0_2 != &arg0); + for (someIndex = 0; someIndex < 3; someIndex++) { + sp94[someIndex] = arg0->thing[someIndex]; } - var_v0_2->unk-4 = (f32) var_t4; } - var_v0_3 = arg2; - var_v1_3 = &sp8C; - do { - var_a0_2 = 0; - if (arg3 < (s32) var_v0_3->unk0) { - var_a0_2 = arg3; + for (someIndex = 0; someIndex < 3; someIndex++) { + if (arg3 < arg2[someIndex].some_limiter) { + some_offset = arg3; + } else { + some_offset = 0; } - var_v1_3 += 2; - temp_t3 = *(arg1 + (var_v0_3->unk2 * 2) + (var_a0_2 * 2)); - var_v0_3 += 4; - var_v1_3->unk-2 = temp_t3; - } while (var_v1_3 != &sp92); - func_800048D8((f32 (*)[4]) &sp4C[0], &sp94, &sp8C); - func_80004740(&gGfxPool->mtxPool[D_8018D120] + 0x2C0, (f32 (*)[4]) &sp4C[0]); - temp_v1 = gDisplayListHead; + sp8C[someIndex] = arg1[arg2[someIndex].some_offset + some_offset]; + } + + func_800048D8(sp4C, sp94, sp8C); + func_80004740(&gGfxPool->mtxPool[D_8018D120 + 11], sp4C); D_80162D7A += 1; - gDisplayListHead = temp_v1 + 8; - temp_v1->words.w0 = 0x01040040; - temp_v1->words.w1 = (u32) (&gGfxPool->mtxPool[D_8018D120] + 0x800002C0); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL2(&gGfxPool->mtxPool[D_8018D120 + 11]), G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW); D_8018D120 += 1; - if (sp3C != 0) { - temp_v0 = segmented_to_virtual(sp3C); - temp_v1_2 = gDisplayListHead; - gDisplayListHead = temp_v1_2 + 8; - temp_v1_2->words.w1 = (u32) temp_v0; - temp_v1_2->words.w0 = 0x06000000; + if (some_segmented_dl != NULL) { + some_dl = segmented_to_virtual(some_segmented_dl); + gSPDisplayList(gDisplayListHead++, some_dl); } } #else GLOBAL_ASM("asm/non_matchings/code_80004740/func_80004A1C.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_80004A1C(void *, s32, s32, s16); // extern -extern ? D_80162D70; -extern s16 D_80162D76; -extern s16 D_80162D78; -extern s16 D_80162D7A; -extern void *gDisplayListHead; +#ifdef NON_MATCHING +/* +https://decomp.me/scratch/DCV5v +Leaving this as non-matching due to all the animation stuff being in flux +But, as stuff currently stands, it is technically matching +There is some really silly type-casting being done to arg0. I don't see a way around it :/ +*/ +void func_80004C30(u32 *arg0, animation_type_2 *arg1, s16 arg2) { + u32 *temp; + s16 *sp40; + s32 some_offset; + animation_type_3_triplet *temp_v0; + s32 new_var; + s32 someIndex; -void func_80004C30(void *arg0, void *arg1, s16 arg2) { - s32 sp40; - ? *temp_v1; - s32 temp_s0; - s32 temp_v0; - void *temp_v1_2; - void *temp_v1_3; - void *phi_a0; - s16 phi_a1; - ? *phi_v1; - void *phi_s2; - s16 phi_a3; - s32 phi_s4; - - arg2 = arg2; - sp40 = segmented_to_virtual(arg1->unkC); - temp_v0 = segmented_to_virtual(arg1->unk10); + sp40 = segmented_to_virtual(arg1->type_2_array_pointer); + temp_v0 = segmented_to_virtual(arg1->type_3_array_pointer); D_80162D7A = 0; D_80162D76 = 0; - phi_a0 = temp_v0; - phi_v1 = &D_80162D70; - phi_s2 = arg0; - phi_a3 = arg2; - do { - phi_a1 = 0; - if (arg2 < phi_a0->unk0) { - phi_a1 = arg2; - } - temp_v1 = phi_v1 + 2; - temp_v1->unk-2 = *(sp40 + (phi_a0->unk2 * 2) + (phi_a1 * 2)); - phi_a0 += 4; - phi_v1 = temp_v1; - } while (temp_v1 != &D_80162D76); - D_80162D78 = 0; - phi_s4 = temp_v0 + 0xC; - do { - temp_s0 = phi_s2->unk0; - if (temp_s0 != 0) { - if (temp_s0 != 1) { - if (temp_s0 != 2) { - if (temp_s0 != 3) { - - } - } else { - temp_v1_2 = gDisplayListHead; - gDisplayListHead = temp_v1_2 + 8; - temp_v1_2->unk4 = 0; - temp_v1_2->unk0 = 0xBD000000; - D_80162D7A = D_80162D7A - 1; - } - } else { - D_80162D78 = 1; - } + for (someIndex = 0; someIndex < 3; someIndex++) { + if (arg2 < (*temp_v0)[someIndex].some_limiter) { + some_offset = arg2; } else { - if (D_80162D78 == 0) { - temp_v1_3 = gDisplayListHead; - gDisplayListHead = temp_v1_3 + 8; - temp_v1_3->unk4 = 0; - temp_v1_3->unk0 = 0xBD000000; - D_80162D7A = D_80162D7A - 1; - } - arg2 = phi_a3; - func_80004A1C(phi_s2, sp40, phi_s4, phi_a3); - D_80162D78 = 0; - phi_a3 = arg2; - phi_s4 += 0xC; + some_offset = 0; } - phi_s2 += phi_s2->unk4 * 4; - } while (temp_s0 != 3); + D_80162D70[someIndex] = sp40[(*temp_v0)[someIndex].some_offset + some_offset]; + } + temp_v0++; + D_80162D78 = 0; + do { + new_var = ((animation_type_1 *) arg0)->type; + switch (new_var) { /* irregular */ + case 3: + break; + case 1: + D_80162D78 = 1; + break; + case 2: + gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW); + D_80162D7A -= 1; + break; + case 0: + if (D_80162D78 == 0) { + gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW); + D_80162D7A -= 1; + } + func_80004A1C(arg0, sp40, *temp_v0, (s32) arg2); + D_80162D78 = 0; + temp_v0++; + break; + } + arg0 += ((animation_type_1*)arg0)->size; + } while (new_var != 3); } #else GLOBAL_ASM("asm/non_matchings/code_80004740/func_80004C30.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_80004C30(s32, void *, s16); // extern - -s16 func_80004DFC(u32 arg0, u32 arg1, s16 arg2, s16 arg3) { - s32 sp24; - void *sp20; - s16 temp_s0; - void *temp_v0; - s16 phi_s0; - s16 phi_s0_2; +#ifdef NON_MATCHING +/* +Leaving this as non-matching due to all the animation stuff being in flux +But, as stuff currently stands, it is technically matching +*/ +s16 func_80004DFC(animation_type_1 *arg0, animation_type_2 **arg1, s16 arg2, s16 arg3) { + animation_type_1 *sp24; + animation_type_2 *temp_v0; + animation_type_2 **sp20; sp24 = segmented_to_virtual(arg0); - temp_v0 = segmented_to_virtual(*(segmented_to_virtual(arg1) + (arg2 * 4))); - phi_s0 = arg3; - if (arg3 >= temp_v0->unk8) { - phi_s0 = 0; + sp20 = segmented_to_virtual(arg1); // Convert the array's address + temp_v0 = segmented_to_virtual(sp20[arg2]); // Convert an array element's address + if (arg3 >= temp_v0->animation_length) { + arg3 = 0; } - sp20 = temp_v0; - func_80004C30(sp24, temp_v0, phi_s0); - temp_s0 = phi_s0 + 1; - phi_s0_2 = temp_s0; - if (temp_s0 >= temp_v0->unk8) { - phi_s0_2 = 0; + func_80004C30(sp24, temp_v0, arg3); + arg3++; + if (arg3 >= temp_v0->animation_length) { + arg3 = 0; } - return phi_s0_2; + return arg3; } #else GLOBAL_ASM("asm/non_matchings/code_80004740/func_80004DFC.s") diff --git a/src/code_80004740.h b/src/code_80004740.h index 1f5e2290f..ed20c95fe 100644 --- a/src/code_80004740.h +++ b/src/code_80004740.h @@ -3,6 +3,185 @@ #include "common_structs.h" +/* +What I know about animation stuff so far + +Its not clear to me exactly what animations even are in MK64, my speculation is that their some form of matrix manipulation sequence. +Presumably the "models" of the objects that are getting animated are a bunch of matrices and the animations somehow change them. +code_80004740 appears to be responsible for the handling of animations. +Animation seem to be reserved for objects, namely: seagulls in KTB, flags in YV, chain chomps in RR, and penguins in SL. + +Each object has 2 pointers of interest, at offsets 0x70 and 0x74 (unk_070 and unk_074). +These are passed to func_80004DFC, along with what appears to be an index and a timer. +func_80004DFC(unk70, unk74, index, timer) + +unk_070 points to what I will call a "Type 1" array. +I call it an array, but I don't think that's entirely accurate. +There are 4 potential "types" of "type 1" arrays: 0, 1, 2, and 3 +Only type 0 has anything below the "size" entry. +The rest only have the type and size. +The contents look like this struct +struct { + s32 type; + s32 size; + s32 always_zero_never_used; + s32 maybe_a_dl_pointer_maybe_null; + s32 thing1; + s32 thing2; + s32 thing3; +} +Again, note that types 1, 2, and 3 only have the "type" and "size" elements. + +They are handled in func_80004C30. +Each "type" indicates a different action to take while iterating over the array. +Type 1: Only used to modify Type 0's behaviour +Type 2: Pop a matrix +Type 3: End of array, stop processing +Type 0: Always handles some part of the animation. If preceded by a Type 1 entry it will pop a matrix prior to the animation handling. + +The "size" entry is used in a weird way. If you have a set of entries like: + + 0x00000001, <- Our unk_070 pointer starts here + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + + 0x00000001, + 0x00000002, + +Then the size of 2 in the first entry is used to move the pointer 2 words forward + + 0x00000001, + 0x00000002, + + 0x00000000, <- Goes here + 0x00000007, + 0x00000000, + 0x00000000, + 0x00000000, + 0xfffffffb, (this is really -5) + 0x00000005, + + 0x00000001, + 0x00000002, + +Then, the 7 does the same thing + + 0x00000001, + 0x00000002, + + 0x00000000, + 0x00000007, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + + 0x00000001, <- Now we're here + 0x00000002, + +This is why I don't think referring to this as an "array" is really correct. +Iterating over this data not like iterating over a proper array at all. + +I don't really understand the "thing" entries yet. +They seem to be used in func_80004A1C to set some values in Vec3f which is then used to set some values in a Mat4. +This, I assume, is related to the matrix maniplation stuff that's used to actually accomplish the animation. + +The unk_074 pointer points to a list of other pointers. +As best as I can tell only the penguins actually have multiple entries in this list, all the other animated objects have just 1 entry. +The pointers in this list have entires that look like this struct: + +struct { + s32 always_set_to_something_but_never_used; + s32 always_zero_never_used; + s/u16 animation_length; + s/u16 has_value_but_never_used; + s32 type_2_array_pointer; + s32 type_3_array_pointer; +} + +I will refer to these structs as Struct 2's. + +Type 2 arrays appear to be just s/u16 arrays. +Their use will be discussed later + +Type 3 arrays appear to be arrays of pairs of s/u16 numbers that look like this struct: + +struct { + s/u16 some_limiter; + s/u16 some_offset; +}; + +Type 3 entires are interesting. +They're used in func_80004C30 and func_80004A1C, and they're always used in triples +The `timer` argument to func_80004DFC is compared to the `some_limiter` entry. +If it less than the limiter then its value it used elsewhere, otherwise 0 is used (more details below). +The `some_offset` value is always used. + +Then, the 2 chosen values are used to select a value from the Type 2 array. +So, for example, if you have a Struct 2 like: + + + 0x00010000, + 0x00000000, + 0x0037, <- animation lenght + 0x000a, + d_course_koopa_troopa_beach_unk_data2, + d_course_koopa_troopa_beach_unk_data3, + +d_course_koopa_troopa_beach_unk_data2 should be a Type 2 array while d_course_koopa_troopa_beach_unk_data3 is a Type 3 array. + +d_course_koopa_troopa_beach_unk_data3 has entries that look like: + //limiter //offset + 0x0001, 0x0000, + 0x0037, 0x0001, + 0x0001, 0x0000, + +In practice the limiter value is always 1 or the animation length, meaning that you either choose 0 or the current animation timer. +There's never a situation where you will choose the animation timer until it hits X and then swap to 0. +Its always one or the other, never swapping. + +The first triplet is used in func_80004C30 to access the Type 2 array and the values accessed is placed into D_80162D70. +D_80162D70 is a Vec3s is then used to set the values of some Vec3f in func_80004A1C. +All further triplets are used in func_80004A1C to collect Type 2 values to another Vec3s local to the function. +Both the local Vec3s and Vec3f are used to create a Mat4, which is then converted to a Mtx, which is then pushed into the matrix pool. + +The chosen values are then used to access the Type 2 array and the value accessed is placed into D_80162D70. +D_80162D70 is a Vec3s that is used to set values in the some Vec3f that goes on to be used to modify the same Mat4 that the `thing` values are placed into. + +*/ + +typedef struct { + /* 0x00 */ s32 type; + /* 0x04 */ s32 size; + /* 0x08 */ s32 always_zero_never_used; + /* 0x0C */ Gfx *optional_segmented_dl_address; + /* 0x10 */ s32 thing[3]; +} animation_type_1; + +typedef struct { + /* 0x00 */ u16 some_limiter; + /* 0x02 */ u16 some_offset; +} animation_type_3; + +typedef animation_type_3 animation_type_3_triplet[3]; + +typedef struct { + /* 0x00 */ s32 always_set_to_something_but_never_used; + /* 0x04 */ s32 always_zero_never_used; + /* 0x08 */ s16 animation_length; + /* 0x0A */ u16 has_value_but_never_used; + /* 0x0C */ s16 *type_2_array_pointer; + /* 0x10 */ animation_type_3_triplet *type_3_array_pointer; +} animation_type_2; + struct stru_80004EAC { s32 unk0; s32 unk4; @@ -14,5 +193,8 @@ struct stru_80004EAC { void func_80004740(Mtx *dest, Mat4 src); void func_800048D8(Mat4 dest, Vec3f b, Vec3s c); s16 func_80004EAC(void*, s16); +void func_80004A1C(animation_type_1*, s16*, animation_type_3_triplet, s32); +void func_80004C30(u32*, animation_type_2*, s16); +s16 func_80004DFC(animation_type_1*, animation_type_2**, s16, s16); #endif \ No newline at end of file