diff --git a/src/globals.c b/src/globals.c index 19c524586..a18da4707 100644 --- a/src/globals.c +++ b/src/globals.c @@ -15262,8 +15262,7 @@ u32 var0000f010 = 0x00000000; u32 var0000f014 = 0x00000000; // f018 -u16 quiptable[] = { - // Part 1 +u16 quiptable_human_bank0[] = { 0x0000, 0x027b, 0x027b, 0x027c, 0x0001, 0x027d, 0x027e, 0x027f, 0x0002, 0x028a, 0x028b, 0x028c, @@ -15305,8 +15304,10 @@ u16 quiptable[] = { 0x0026, 0x02a3, 0x02a4, 0x02a5, 0x0027, 0x04c6, 0x04c6, 0x04c6, 0x0028, 0x1aa6, 0x1aa6, 0x1aa6, +}; - // Part 2 +// f160 +u16 quiptable_f160[] = { 0x0000, 0x0322, 0x0323, 0x0324, 0x0001, 0x0325, 0x0326, 0x0327, 0x0002, 0x812e, 0x0335, 0x0336, @@ -15348,8 +15349,10 @@ u16 quiptable[] = { 0x0026, 0x0356, 0x0357, 0x035a, 0x0027, 0x812b, 0x032f, 0x812c, 0x0028, 0x1ad2, 0x1ad2, 0x1ad2, +}; - // Part 3 +// f2a8 +u16 quiptable_f2a8[] = { 0x0000, 0x03e7, 0x03e8, 0x03e9, 0x0001, 0x03ea, 0x03eb, 0x03ec, 0x0002, 0x03f9, 0x03fa, 0x03fb, @@ -15391,8 +15394,10 @@ u16 quiptable[] = { 0x0026, 0x041b, 0x0417, 0x041d, 0x0027, 0x8134, 0x03f4, 0x8134, 0x0028, 0x1adb, 0x1adb, 0x1adb, +}; - // Part 4 +// f3f0 +u16 quiptable_f3f0[] = { 0x0000, 0x0396, 0x0396, 0x0396, 0x0001, 0x0037, 0x0398, 0x0399, 0x0002, 0x03a4, 0x0037, 0x03a6, @@ -15434,8 +15439,10 @@ u16 quiptable[] = { 0x0026, 0x03bc, 0x03be, 0x03c0, 0x0027, 0x039f, 0x039f, 0x039f, 0x0028, 0x0000, 0x0000, 0x0000, +}; - // Part 5 +// f538 +u16 quiptable_human_bank1[] = { 0x0000, 0x0af2, 0x0af3, 0x0af8, 0x0001, 0x1aee, 0x1aef, 0x1aee, 0x0002, 0x023d, 0x023e, 0x0247, @@ -15482,8 +15489,10 @@ u16 quiptable[] = { 0x002b, 0x0af2, 0x0af8, 0x0af8, 0x002c, 0x0525, 0x0525, 0x0525, 0x002d, 0x1aec, 0x1aec, 0x1aec, +}; - // Part 6 +// f6a8 +u16 quiptable_f6a8[] = { 0x0001, 0x0253, 0x0254, 0x0255, 0x0002, 0x0256, 0x0257, 0x0256, 0x0003, 0x1e40, 0x1e41, 0x1e42, @@ -15494,19 +15503,25 @@ u16 quiptable[] = { 0x0008, 0x1e4f, 0x1e50, 0x1e51, 0x0009, 0x1e52, 0x1e53, 0x1e54, 0x000a, 0x4a0a, 0x4a0c, 0x4a0c, +}; - // Part 7 +// f6f8 +u16 quiptable_skedar[] = { 0x0001, 0x0529, 0x052a, 0x052b, 0x0002, 0x052d, 0x052e, 0x052f, 0x0003, 0x0530, 0x0530, 0x0531, +}; - // Part 8 +// f710 +u16 quiptable_f710[] = { 0x0001, 0x0532, 0x0533, 0x0534, 0x0002, 0x0536, 0x0537, 0x0538, 0x0003, 0x0539, 0x0539, 0x053a, - - // Part 9 0x0000, 0x0000, 0x0000, 0x0000, +}; + +// f730 +u16 quiptable_maian[] = { 0x0001, 0x05e2, 0x05e3, 0x05e4, 0x0002, 0x05e5, 0x05e6, 0x05e7, 0x0003, 0x05df, 0x05e0, 0x05e1, @@ -15537,58 +15552,57 @@ u32 var0000f7a0 = 0x00000000; u32 var0000f7a4 = 0x00000000; u32 var0000f7a8 = 0x00000000; u32 var0000f7ac = 0x1a000003; -u32 var0000f7b0 = 0x17a117a2; -u32 var0000f7b4 = 0x17a317a4; -u32 var0000f7b8 = 0x17a517a6; -u32 var0000f7bc = 0x17a717a8; -u32 var0000f7c0 = 0x17a917aa; -u32 var0000f7c4 = 0x17ab17ac; -u32 var0000f7c8 = 0x17ad17ae; -u32 var0000f7cc = 0x17af179e; -u32 var0000f7d0 = 0x179f17a0; -u32 var0000f7d4 = 0x80288028; -u32 var0000f7d8 = 0x8028802b; -u32 var0000f7dc = 0x802b802b; -u32 var0000f7e0 = 0x802c802d; -u32 var0000f7e4 = 0x802e802f; -u32 var0000f7e8 = 0x802f802f; -u32 var0000f7ec = 0x80308030; -u32 var0000f7f0 = 0x80308031; -u32 var0000f7f4 = 0x80318031; -u32 var0000f7f8 = 0x80328032; -u32 var0000f7fc = 0x80338033; -u32 var0000f800 = 0x80348034; -u32 var0000f804 = 0x80358035; -u32 var0000f808 = 0x80368036; -u32 var0000f80c = 0x80378037; -u32 var0000f810 = 0x177b177b; -u32 var0000f814 = 0x177b177d; -u32 var0000f818 = 0x177d177d; -u32 var0000f81c = 0x1789178a; -u32 var0000f820 = 0x178b178d; -u32 var0000f824 = 0x178d178d; -u32 var0000f828 = 0x17951795; -u32 var0000f82c = 0x17951785; -u32 var0000f830 = 0x17851785; -u32 var0000f834 = 0x17911791; -u32 var0000f838 = 0x17911791; -u32 var0000f83c = 0x17911791; -u32 var0000f840 = 0x17821782; -u32 var0000f844 = 0x17821783; -u32 var0000f848 = 0x17831783; -u32 var0000f84c = 0x00001b1c; -u32 var0000f850 = 0x1b1f1b20; -u32 var0000f854 = 0x00001b1e; -u32 var0000f858 = 0x1b211b21; -u32 var0000f85c = 0x1b1d1b1d; -u32 var0000f860 = 0x02960297; -u32 var0000f864 = 0x0298028a; -u32 var0000f868 = 0x028c0290; -u32 var0000f86c = 0x029100a3; -u32 var0000f870 = 0x028e028f; -u32 var0000f874 = 0x02310232; -u32 var0000f878 = 0x02330234; -u32 var0000f87c = 0x028d0000; + +// f7b0 +u16 ciquiptable_bank1[] = { + 0x17a1, 0x17a2, 0x17a3, 0x17a4, 0x17a5, 0x17a6, 0x17a7, 0x17a8, + 0x17a9, 0x17aa, 0x17ab, 0x17ac, 0x17ad, 0x17ae, 0x17af, 0x179e, + 0x179f, 0x17a0, +}; + +// f7d4 +u16 ciquiptable_bank0[] = { + 0x8028, 0x8028, 0x8028, 0x802b, 0x802b, 0x802b, 0x802c, 0x802d, + 0x802e, 0x802f, 0x802f, 0x802f, 0x8030, 0x8030, 0x8030, 0x8031, + 0x8031, 0x8031, 0x8032, 0x8032, 0x8033, 0x8033, 0x8034, 0x8034, + 0x8035, 0x8035, 0x8036, 0x8036, 0x8037, 0x8037, +}; + +// f810 +u16 ciquiptable_bank2[] = { + 0x177b, 0x177b, 0x177b, 0x177d, 0x177d, 0x177d, 0x1789, 0x178a, + 0x178b, 0x178d, 0x178d, 0x178d, 0x1795, 0x1795, 0x1795, 0x1785, + 0x1785, 0x1785, 0x1791, 0x1791, 0x1791, 0x1791, 0x1791, 0x1791, + 0x1782, 0x1782, 0x1782, 0x1783, 0x1783, 0x1783, +}; + +// f84c +u16 ciquiptable_bank3[] = { + 0x0000, 0x1b1c, 0x1b1f, 0x1b20, 0x0000, 0x1b1e, 0x1b21, 0x1b21, + 0x1b1d, 0x1b1d, +}; + +// f860 +// table for cmd 01a3 (do_special_animation) +u16 special_animations[] = { + 0x0296, + 0x0297, + 0x0298, // when value is 3 (1/2 chance) + 0x028a, // when value is 3 (1/2 chance) + 0x028c, + 0x0290, + 0x0291, // when value is -1 (1/8 chance) + 0x00a3, // when value is -1 (1/8 chance) - talking anim + 0x028e, // when value is -1 (1/8 chance) + 0x028f, // when value is -1 (1/8 chance) + 0x0231, // when value is -1 (1/8 chance) - talking anim + 0x0232, // when value is -1 (1/8 chance) - talking anim + 0x0233, // when value is -1 (1/8 chance) - talking anim + 0x0234, // when value is -1 (1/8 chance) - talking anim + 0x028d, + 0x0000, +}; + u32 var0000f880 = 0x00000000; u32 var0000f884 = 0x00000000; u32 var0000f888 = 0x00000000; diff --git a/src/include/commands.h b/src/include/commands.h index d92b22743..fec8b4e01 100644 --- a/src/include/commands.h +++ b/src/include/commands.h @@ -1158,11 +1158,16 @@ #define cmd012f \ mkshort(0x012f), -#define say_quip(chr, u1, index, u2, u3, bank, u4, channel) \ +/** + * Make chr say something out of a random set of 3. Sets are defined in globals. + * The bank argument applies to humans only. Skedar and maians have their own + * hard coded banks. + */ +#define say_quip(chr, index, u1, u2, u3, bank, u4, channel) \ mkshort(0x0130), \ chr, \ - u1, \ index, \ + u1, \ u2, \ u3, \ bank, \ @@ -1574,11 +1579,17 @@ #define set_chr_roomtosearch \ mkshort(0x01a1), -#define play_chr_specific_quip(bank, channel) \ +#define play_cistaff_quip(bank, channel) \ mkshort(0x01a2), \ bank, \ channel, +/** + * If value is -2, either do 0x299 or 0x29a based on something. + * If value is -1, choose a random anim out of 8 from bank at 8006984c. + * If value is 3, choose a random anim out of 2 from bank at 80069844. + * Any other value is an index into bank at 80069840. + */ #define do_special_animation(value) \ mkshort(0x01a3), \ value, diff --git a/src/setup/setupdish.c b/src/setup/setupdish.c index 53feb60a2..4ca738e14 100644 --- a/src/setup/setupdish.c +++ b/src/setup/setupdish.c @@ -606,7 +606,7 @@ u8 func041e_colleague[] = { label(0x7f) animation(ANIM_SITTING_0265, 0, -1, 0x1400, CHR_SELF, 2) label(0x2f) - play_chr_specific_quip(BANK_0, CHANNEL_6) + play_cistaff_quip(BANK_0, CHANNEL_6) restart_timer beginloop(0x57) @@ -637,7 +637,7 @@ u8 func041e_colleague[] = { label(0x06) do_special_animation(-1) label(0x06) - play_chr_specific_quip(BANK_1, CHANNEL_6) + play_cistaff_quip(BANK_1, CHANNEL_6) restart_timer beginloop(0x5b) @@ -680,7 +680,7 @@ u8 func041e_colleague[] = { label(0x7f) animation(ANIM_SITTING_0265, 0, -1, 0x1400, CHR_SELF, 2) label(0x06) - play_chr_specific_quip(BANK_2, CHANNEL_6) + play_cistaff_quip(BANK_2, CHANNEL_6) restart_timer beginloop(0x5c) @@ -2475,7 +2475,7 @@ u8 func0429_grimshaw_disguise[] = { label(0x06) dprint 'I','n','i','t','i','a','l','i','s','e','c',0, do_special_animation(3) - play_chr_specific_quip(BANK_0, CHANNEL_6) + play_cistaff_quip(BANK_0, CHANNEL_6) restart_timer beginloop(0x57) diff --git a/src/setup/setupimp.c b/src/setup/setupimp.c index fd74c828e..f66a1d7bc 100644 --- a/src/setup/setupimp.c +++ b/src/setup/setupimp.c @@ -1995,7 +1995,7 @@ u8 func0425_hostage_thank_and_run[] = { goto_first(0x0b) label(0x08) - play_chr_specific_quip(BANK_3, CHANNEL_6) + play_cistaff_quip(BANK_3, CHANNEL_6) animation(ANIM_TALKING_0231, 0, -1, 0x1010, CHR_SELF, 2) label(0x2f) restart_timer @@ -2085,7 +2085,7 @@ u8 func0427_drop_devastator[] = { give_object_to_chr(OBJ_DEVASTATOR, CHR_SELF) yield drop_concealed_items(CHR_SELF) - play_chr_specific_quip(BANK_3, CHANNEL_6) + play_cistaff_quip(BANK_3, CHANNEL_6) animation(ANIM_TALKING_0231, 0, -1, 0x1010, CHR_SELF, 2) restart_timer