diff --git a/config/GMPP01_00/symbols.txt b/config/GMPP01_00/symbols.txt index 33e87867..be859f5f 100644 --- a/config/GMPP01_00/symbols.txt +++ b/config/GMPP01_00/symbols.txt @@ -4940,12 +4940,12 @@ seqFontKanaTbl = .data:0x8012F1F0; // type:object size:0x52 scope:local seqFontNumTbl = .data:0x8012F242; // type:object size:0xB scope:local data:string letterBufTbl = .data:0x8012F250; // type:object size:0x14 scope:local wordMgTbl = .data:0x8012F264; // type:object size:0x18 scope:local -letterOfs$1002 = .data:0x8012F27C; // type:object size:0x40 -letterOfs$1479 = .data:0x8012F2BC; // type:object size:0x1C -letterOfs$1853 = .data:0x8012F2D8; // type:object size:0x38 -lbl_8012F310 = .data:0x8012F310; // type:object size:0xC data:string +letterOfs$1002 = .data:0x8012F27C; // type:object size:0x40 scope:local +letterOfs$1479 = .data:0x8012F2BC; // type:object size:0x1C scope:local +letterOfs$1853 = .data:0x8012F2D8; // type:object size:0x38 scope:local +lbl_8012F310 = .data:0x8012F310; // type:object size:0xC scope:local data:string winCharNameTbl = .data:0x8012F31C; // type:object size:0x78 scope:local -lbl_8012F394 = .data:0x8012F394; // type:object size:0xC +lbl_8012F394 = .data:0x8012F394; // type:object size:0xC scope:local winWordTbl = .data:0x8012F3A0; // type:object size:0x18 scope:local winPosOfs = .data:0x8012F3B8; // type:object size:0x50 scope:local practiceTbl = .data:0x8012F408; // type:object size:0xAC scope:local @@ -5806,43 +5806,43 @@ wordFinishJ = .sdata:0x801F0874; // type:object size:0x8 scope:local wordDrawJ = .sdata:0x801F087C; // type:object size:0x6 scope:local wordFinishE = .sdata:0x801F0882; // type:object size:0x8 scope:local data:string wordDrawE = .sdata:0x801F088A; // type:object size:0x6 scope:local data:string -lbl_801F0890 = .sdata:0x801F0890; // type:object size:0x4 -lbl_801F0894 = .sdata:0x801F0894; // type:object size:0x6 data:string -lbl_801F089A = .sdata:0x801F089A; // type:object size:0x6 -lbl_801F08A0 = .sdata:0x801F08A0; // type:object size:0x6 data:string -lbl_801F08A6 = .sdata:0x801F08A6; // type:object size:0x5 -lbl_801F08AB = .sdata:0x801F08AB; // type:object size:0x6 data:string -lbl_801F08B1 = .sdata:0x801F08B1; // type:object size:0x5 -lbl_801F08B6 = .sdata:0x801F08B6; // type:object size:0x6 data:string -lbl_801F08BC = .sdata:0x801F08BC; // type:object size:0x4 -lbl_801F08C0 = .sdata:0x801F08C0; // type:object size:0x6 data:string -lbl_801F08C6 = .sdata:0x801F08C6; // type:object size:0x6 -lbl_801F08CC = .sdata:0x801F08CC; // type:object size:0x5 data:string -lbl_801F08D1 = .sdata:0x801F08D1; // type:object size:0x7 -lbl_801F08D8 = .sdata:0x801F08D8; // type:object size:0x6 data:string -lbl_801F08DE = .sdata:0x801F08DE; // type:object size:0x7 -lbl_801F08E5 = .sdata:0x801F08E5; // type:object size:0x8 data:string -lbl_801F08ED = .sdata:0x801F08ED; // type:object size:0x5 -lbl_801F08F2 = .sdata:0x801F08F2; // type:object size:0x7 data:string -lbl_801F08F9 = .sdata:0x801F08F9; // type:object size:0x6 -lbl_801F08FF = .sdata:0x801F08FF; // type:object size:0x5 data:string -lbl_801F0904 = .sdata:0x801F0904; // type:object size:0x5 -lbl_801F0909 = .sdata:0x801F0909; // type:object size:0x8 data:string -lbl_801F0911 = .sdata:0x801F0911; // type:object size:0x4 -lbl_801F0915 = .sdata:0x801F0915; // type:object size:0x4 data:string -lbl_801F0919 = .sdata:0x801F0919; // type:object size:0x5 -lbl_801F091E = .sdata:0x801F091E; // type:object size:0x6 data:string -lbl_801F0924 = .sdata:0x801F0924; // type:object size:0x7 -lbl_801F092B = .sdata:0x801F092B; // type:object size:0x6 -lbl_801F0931 = .sdata:0x801F0931; // type:object size:0x7 data:string -lbl_801F0938 = .sdata:0x801F0938; // type:object size:0x3 -lbl_801F093B = .sdata:0x801F093B; // type:object size:0x5 data:string -lbl_801F0940 = .sdata:0x801F0940; // type:object size:0x6 -lbl_801F0946 = .sdata:0x801F0946; // type:object size:0x5 data:string -lbl_801F094B = .sdata:0x801F094B; // type:object size:0x7 -lbl_801F0952 = .sdata:0x801F0952; // type:object size:0x6 -lbl_801F0958 = .sdata:0x801F0958; // type:object size:0x8 -pauseStr$2309 = .sdata:0x801F0960; // type:object size:0x8 +lbl_801F0890 = .sdata:0x801F0890; // type:object size:0x4 scope:local +lbl_801F0894 = .sdata:0x801F0894; // type:object size:0x6 scope:local data:string +lbl_801F089A = .sdata:0x801F089A; // type:object size:0x6 scope:local +lbl_801F08A0 = .sdata:0x801F08A0; // type:object size:0x6 scope:local data:string +lbl_801F08A6 = .sdata:0x801F08A6; // type:object size:0x5 scope:local +lbl_801F08AB = .sdata:0x801F08AB; // type:object size:0x6 scope:local data:string +lbl_801F08B1 = .sdata:0x801F08B1; // type:object size:0x5 scope:local +lbl_801F08B6 = .sdata:0x801F08B6; // type:object size:0x6 scope:local data:string +lbl_801F08BC = .sdata:0x801F08BC; // type:object size:0x4 scope:local +lbl_801F08C0 = .sdata:0x801F08C0; // type:object size:0x6 scope:local data:string +lbl_801F08C6 = .sdata:0x801F08C6; // type:object size:0x6 scope:local +lbl_801F08CC = .sdata:0x801F08CC; // type:object size:0x5 scope:local data:string +lbl_801F08D1 = .sdata:0x801F08D1; // type:object size:0x7 scope:local +lbl_801F08D8 = .sdata:0x801F08D8; // type:object size:0x6 scope:local data:string +lbl_801F08DE = .sdata:0x801F08DE; // type:object size:0x7 scope:local +lbl_801F08E5 = .sdata:0x801F08E5; // type:object size:0x8 scope:local data:string +lbl_801F08ED = .sdata:0x801F08ED; // type:object size:0x5 scope:local +lbl_801F08F2 = .sdata:0x801F08F2; // type:object size:0x7 scope:local data:string +lbl_801F08F9 = .sdata:0x801F08F9; // type:object size:0x6 scope:local +lbl_801F08FF = .sdata:0x801F08FF; // type:object size:0x5 scope:local data:string +lbl_801F0904 = .sdata:0x801F0904; // type:object size:0x5 scope:local +lbl_801F0909 = .sdata:0x801F0909; // type:object size:0x8 scope:local data:string +lbl_801F0911 = .sdata:0x801F0911; // type:object size:0x4 scope:local +lbl_801F0915 = .sdata:0x801F0915; // type:object size:0x4 scope:local data:string +lbl_801F0919 = .sdata:0x801F0919; // type:object size:0x5 scope:local +lbl_801F091E = .sdata:0x801F091E; // type:object size:0x6 scope:local data:string +lbl_801F0924 = .sdata:0x801F0924; // type:object size:0x7 scope:local +lbl_801F092B = .sdata:0x801F092B; // type:object size:0x6 scope:local +lbl_801F0931 = .sdata:0x801F0931; // type:object size:0x7 scope:local data:string +lbl_801F0938 = .sdata:0x801F0938; // type:object size:0x3 scope:local +lbl_801F093B = .sdata:0x801F093B; // type:object size:0x5 scope:local data:string +lbl_801F0940 = .sdata:0x801F0940; // type:object size:0x6 scope:local +lbl_801F0946 = .sdata:0x801F0946; // type:object size:0x5 scope:local data:string +lbl_801F094B = .sdata:0x801F094B; // type:object size:0x7 scope:local +lbl_801F0952 = .sdata:0x801F0952; // type:object size:0x6 scope:local +lbl_801F0958 = .sdata:0x801F0958; // type:object size:0x8 scope:local +pauseStr$2309 = .sdata:0x801F0960; // type:object size:0x8 scope:local lbl_801F0968 = .sdata:0x801F0968; // type:object size:0x8 scope:local lbl_801F0970 = .sdata:0x801F0970; // type:object size:0x8 lbl_801F0978 = .sdata:0x801F0978; // type:object size:0x8 @@ -7115,90 +7115,90 @@ lbl_801F2090 = .sdata2:0x801F2090; // type:object size:0x4 data:float lbl_801F2094 = .sdata2:0x801F2094; // type:object size:0x4 data:float lbl_801F2098 = .sdata2:0x801F2098; // type:object size:0x4 data:float lbl_801F20A0 = .sdata2:0x801F20A0; // type:object size:0x8 data:double -lbl_801F20A8 = .sdata2:0x801F20A8; // type:object size:0x4 data:float -lbl_801F20AC = .sdata2:0x801F20AC; // type:object size:0x4 data:float -lbl_801F20B0 = .sdata2:0x801F20B0; // type:object size:0x4 data:float -lbl_801F20B8 = .sdata2:0x801F20B8; // type:object size:0x8 data:double -lbl_801F20C0 = .sdata2:0x801F20C0; // type:object size:0x8 data:double -lbl_801F20C8 = .sdata2:0x801F20C8; // type:object size:0x8 data:double -lbl_801F20D0 = .sdata2:0x801F20D0; // type:object size:0x8 data:double -lbl_801F20D8 = .sdata2:0x801F20D8; // type:object size:0x8 data:double -lbl_801F20E0 = .sdata2:0x801F20E0; // type:object size:0x8 data:double -lbl_801F20E8 = .sdata2:0x801F20E8; // type:object size:0x4 data:float -lbl_801F20EC = .sdata2:0x801F20EC; // type:object size:0x4 data:float -lbl_801F20F0 = .sdata2:0x801F20F0; // type:object size:0x8 data:double -lbl_801F20F8 = .sdata2:0x801F20F8; // type:object size:0x4 data:float -lbl_801F20FC = .sdata2:0x801F20FC; // type:object size:0x4 data:float -lbl_801F2100 = .sdata2:0x801F2100; // type:object size:0x4 data:float -lbl_801F2104 = .sdata2:0x801F2104; // type:object size:0x4 data:float -lbl_801F2108 = .sdata2:0x801F2108; // type:object size:0x4 data:float -lbl_801F210C = .sdata2:0x801F210C; // type:object size:0x4 data:float -lbl_801F2110 = .sdata2:0x801F2110; // type:object size:0x4 data:float -lbl_801F2114 = .sdata2:0x801F2114; // type:object size:0x4 data:float -lbl_801F2118 = .sdata2:0x801F2118; // type:object size:0x4 data:float -lbl_801F211C = .sdata2:0x801F211C; // type:object size:0x4 data:float -lbl_801F2120 = .sdata2:0x801F2120; // type:object size:0x4 data:float -lbl_801F2124 = .sdata2:0x801F2124; // type:object size:0x4 data:float -lbl_801F2128 = .sdata2:0x801F2128; // type:object size:0x4 data:float -lbl_801F212C = .sdata2:0x801F212C; // type:object size:0x4 data:float -lbl_801F2130 = .sdata2:0x801F2130; // type:object size:0x4 data:float -lbl_801F2134 = .sdata2:0x801F2134; // type:object size:0x4 data:float -lbl_801F2138 = .sdata2:0x801F2138; // type:object size:0x4 data:float -lbl_801F213C = .sdata2:0x801F213C; // type:object size:0x4 data:float -lbl_801F2140 = .sdata2:0x801F2140; // type:object size:0x8 data:double -lbl_801F2148 = .sdata2:0x801F2148; // type:object size:0x4 data:float -lbl_801F214C = .sdata2:0x801F214C; // type:object size:0x4 data:float -lbl_801F2150 = .sdata2:0x801F2150; // type:object size:0x8 data:double -lbl_801F2158 = .sdata2:0x801F2158; // type:object size:0x8 data:double -lbl_801F2160 = .sdata2:0x801F2160; // type:object size:0x4 data:float -lbl_801F2164 = .sdata2:0x801F2164; // type:object size:0x4 data:float -lbl_801F2168 = .sdata2:0x801F2168; // type:object size:0x8 data:double -lbl_801F2170 = .sdata2:0x801F2170; // type:object size:0x4 data:float -lbl_801F2174 = .sdata2:0x801F2174; // type:object size:0x4 data:float -lbl_801F2178 = .sdata2:0x801F2178; // type:object size:0x4 data:float -lbl_801F217C = .sdata2:0x801F217C; // type:object size:0x4 data:float -lbl_801F2180 = .sdata2:0x801F2180; // type:object size:0x4 data:float -lbl_801F2188 = .sdata2:0x801F2188; // type:object size:0x8 data:double -lbl_801F2190 = .sdata2:0x801F2190; // type:object size:0x4 data:float -lbl_801F2198 = .sdata2:0x801F2198; // type:object size:0x8 data:double -lbl_801F21A0 = .sdata2:0x801F21A0; // type:object size:0x4 data:float -lbl_801F21A4 = .sdata2:0x801F21A4; // type:object size:0x4 data:float -lbl_801F21A8 = .sdata2:0x801F21A8; // type:object size:0x4 data:float -lbl_801F21AC = .sdata2:0x801F21AC; // type:object size:0x4 data:float -lbl_801F21B0 = .sdata2:0x801F21B0; // type:object size:0x8 data:double -lbl_801F21B8 = .sdata2:0x801F21B8; // type:object size:0x4 data:float -lbl_801F21C0 = .sdata2:0x801F21C0; // type:object size:0x8 data:double -lbl_801F21C8 = .sdata2:0x801F21C8; // type:object size:0x8 data:double -lbl_801F21D0 = .sdata2:0x801F21D0; // type:object size:0x8 data:double -lbl_801F21D8 = .sdata2:0x801F21D8; // type:object size:0x4 data:float -lbl_801F21E0 = .sdata2:0x801F21E0; // type:object size:0x8 data:double -lbl_801F21E8 = .sdata2:0x801F21E8; // type:object size:0x4 data:float -lbl_801F21EC = .sdata2:0x801F21EC; // type:object size:0x4 data:float -lbl_801F21F0 = .sdata2:0x801F21F0; // type:object size:0x4 data:float -lbl_801F21F4 = .sdata2:0x801F21F4; // type:object size:0x4 data:float -lbl_801F21F8 = .sdata2:0x801F21F8; // type:object size:0x4 data:float -lbl_801F21FC = .sdata2:0x801F21FC; // type:object size:0x4 data:float -lbl_801F2200 = .sdata2:0x801F2200; // type:object size:0x4 data:float -lbl_801F2208 = .sdata2:0x801F2208; // type:object size:0x8 data:double -lbl_801F2210 = .sdata2:0x801F2210; // type:object size:0x8 data:double -lbl_801F2218 = .sdata2:0x801F2218; // type:object size:0x8 data:double -lbl_801F2220 = .sdata2:0x801F2220; // type:object size:0x2 data:2byte -lbl_801F2222 = .sdata2:0x801F2222; // type:object size:0x2 data:2byte -lbl_801F2224 = .sdata2:0x801F2224; // type:object size:0x2 data:2byte -lbl_801F2228 = .sdata2:0x801F2228; // type:object size:0x4 data:float -lbl_801F222C = .sdata2:0x801F222C; // type:object size:0x4 data:float -lbl_801F2230 = .sdata2:0x801F2230; // type:object size:0x4 data:float -lbl_801F2234 = .sdata2:0x801F2234; // type:object size:0x4 data:float -lbl_801F2238 = .sdata2:0x801F2238; // type:object size:0x4 data:float -lbl_801F223C = .sdata2:0x801F223C; // type:object size:0x4 data:float -lbl_801F2240 = .sdata2:0x801F2240; // type:object size:0x4 data:float -lbl_801F2244 = .sdata2:0x801F2244; // type:object size:0x4 data:float -lbl_801F2248 = .sdata2:0x801F2248; // type:object size:0x4 data:float -lbl_801F224C = .sdata2:0x801F224C; // type:object size:0x4 data:float -lbl_801F2250 = .sdata2:0x801F2250; // type:object size:0x8 data:double -lbl_801F2258 = .sdata2:0x801F2258; // type:object size:0x8 data:double -lbl_801F2260 = .sdata2:0x801F2260; // type:object size:0x4 data:float -lbl_801F2264 = .sdata2:0x801F2264; // type:object size:0x4 data:float +lbl_801F20A8 = .sdata2:0x801F20A8; // type:object size:0x4 scope:local data:float +lbl_801F20AC = .sdata2:0x801F20AC; // type:object size:0x4 scope:local data:float +lbl_801F20B0 = .sdata2:0x801F20B0; // type:object size:0x4 scope:local data:float +lbl_801F20B8 = .sdata2:0x801F20B8; // type:object size:0x8 scope:local data:double +lbl_801F20C0 = .sdata2:0x801F20C0; // type:object size:0x8 scope:local data:double +lbl_801F20C8 = .sdata2:0x801F20C8; // type:object size:0x8 scope:local data:double +lbl_801F20D0 = .sdata2:0x801F20D0; // type:object size:0x8 scope:local data:double +lbl_801F20D8 = .sdata2:0x801F20D8; // type:object size:0x8 scope:local data:double +lbl_801F20E0 = .sdata2:0x801F20E0; // type:object size:0x8 scope:local data:double +lbl_801F20E8 = .sdata2:0x801F20E8; // type:object size:0x4 scope:local data:float +lbl_801F20EC = .sdata2:0x801F20EC; // type:object size:0x4 scope:local data:float +lbl_801F20F0 = .sdata2:0x801F20F0; // type:object size:0x8 scope:local data:double +lbl_801F20F8 = .sdata2:0x801F20F8; // type:object size:0x4 scope:local data:float +lbl_801F20FC = .sdata2:0x801F20FC; // type:object size:0x4 scope:local data:float +lbl_801F2100 = .sdata2:0x801F2100; // type:object size:0x4 scope:local data:float +lbl_801F2104 = .sdata2:0x801F2104; // type:object size:0x4 scope:local data:float +lbl_801F2108 = .sdata2:0x801F2108; // type:object size:0x4 scope:local data:float +lbl_801F210C = .sdata2:0x801F210C; // type:object size:0x4 scope:local data:float +lbl_801F2110 = .sdata2:0x801F2110; // type:object size:0x4 scope:local data:float +lbl_801F2114 = .sdata2:0x801F2114; // type:object size:0x4 scope:local data:float +lbl_801F2118 = .sdata2:0x801F2118; // type:object size:0x4 scope:local data:float +lbl_801F211C = .sdata2:0x801F211C; // type:object size:0x4 scope:local data:float +lbl_801F2120 = .sdata2:0x801F2120; // type:object size:0x4 scope:local data:float +lbl_801F2124 = .sdata2:0x801F2124; // type:object size:0x4 scope:local data:float +lbl_801F2128 = .sdata2:0x801F2128; // type:object size:0x4 scope:local data:float +lbl_801F212C = .sdata2:0x801F212C; // type:object size:0x4 scope:local data:float +lbl_801F2130 = .sdata2:0x801F2130; // type:object size:0x4 scope:local data:float +lbl_801F2134 = .sdata2:0x801F2134; // type:object size:0x4 scope:local data:float +lbl_801F2138 = .sdata2:0x801F2138; // type:object size:0x4 scope:local data:float +lbl_801F213C = .sdata2:0x801F213C; // type:object size:0x4 scope:local data:float +lbl_801F2140 = .sdata2:0x801F2140; // type:object size:0x8 scope:local data:double +lbl_801F2148 = .sdata2:0x801F2148; // type:object size:0x4 scope:local data:float +lbl_801F214C = .sdata2:0x801F214C; // type:object size:0x4 scope:local data:float +lbl_801F2150 = .sdata2:0x801F2150; // type:object size:0x8 scope:local data:double +lbl_801F2158 = .sdata2:0x801F2158; // type:object size:0x8 scope:local data:double +lbl_801F2160 = .sdata2:0x801F2160; // type:object size:0x4 scope:local data:float +lbl_801F2164 = .sdata2:0x801F2164; // type:object size:0x4 scope:local data:float +lbl_801F2168 = .sdata2:0x801F2168; // type:object size:0x8 scope:local data:double +lbl_801F2170 = .sdata2:0x801F2170; // type:object size:0x4 scope:local data:float +lbl_801F2174 = .sdata2:0x801F2174; // type:object size:0x4 scope:local data:float +lbl_801F2178 = .sdata2:0x801F2178; // type:object size:0x4 scope:local data:float +lbl_801F217C = .sdata2:0x801F217C; // type:object size:0x4 scope:local data:float +lbl_801F2180 = .sdata2:0x801F2180; // type:object size:0x4 scope:local data:float +lbl_801F2188 = .sdata2:0x801F2188; // type:object size:0x8 scope:local data:double +lbl_801F2190 = .sdata2:0x801F2190; // type:object size:0x4 scope:local data:float +lbl_801F2198 = .sdata2:0x801F2198; // type:object size:0x8 scope:local data:double +lbl_801F21A0 = .sdata2:0x801F21A0; // type:object size:0x4 scope:local data:float +lbl_801F21A4 = .sdata2:0x801F21A4; // type:object size:0x4 scope:local data:float +lbl_801F21A8 = .sdata2:0x801F21A8; // type:object size:0x4 scope:local data:float +lbl_801F21AC = .sdata2:0x801F21AC; // type:object size:0x4 scope:local data:float +lbl_801F21B0 = .sdata2:0x801F21B0; // type:object size:0x8 scope:local data:double +lbl_801F21B8 = .sdata2:0x801F21B8; // type:object size:0x4 scope:local data:float +lbl_801F21C0 = .sdata2:0x801F21C0; // type:object size:0x8 scope:local data:double +lbl_801F21C8 = .sdata2:0x801F21C8; // type:object size:0x8 scope:local data:double +lbl_801F21D0 = .sdata2:0x801F21D0; // type:object size:0x8 scope:local data:double +lbl_801F21D8 = .sdata2:0x801F21D8; // type:object size:0x4 scope:local data:float +lbl_801F21E0 = .sdata2:0x801F21E0; // type:object size:0x8 scope:local data:double +lbl_801F21E8 = .sdata2:0x801F21E8; // type:object size:0x4 scope:local data:float +lbl_801F21EC = .sdata2:0x801F21EC; // type:object size:0x4 scope:local data:float +lbl_801F21F0 = .sdata2:0x801F21F0; // type:object size:0x4 scope:local data:float +lbl_801F21F4 = .sdata2:0x801F21F4; // type:object size:0x4 scope:local data:float +lbl_801F21F8 = .sdata2:0x801F21F8; // type:object size:0x4 scope:local data:float +lbl_801F21FC = .sdata2:0x801F21FC; // type:object size:0x4 scope:local data:float +lbl_801F2200 = .sdata2:0x801F2200; // type:object size:0x4 scope:local data:float +lbl_801F2208 = .sdata2:0x801F2208; // type:object size:0x8 scope:local data:double +lbl_801F2210 = .sdata2:0x801F2210; // type:object size:0x8 scope:local data:double +lbl_801F2218 = .sdata2:0x801F2218; // type:object size:0x8 scope:local data:double +lbl_801F2220 = .sdata2:0x801F2220; // type:object size:0x2 scope:local data:2byte +lbl_801F2222 = .sdata2:0x801F2222; // type:object size:0x2 scope:local data:2byte +lbl_801F2224 = .sdata2:0x801F2224; // type:object size:0x2 scope:local data:2byte +lbl_801F2228 = .sdata2:0x801F2228; // type:object size:0x4 scope:local data:float +lbl_801F222C = .sdata2:0x801F222C; // type:object size:0x4 scope:local data:float +lbl_801F2230 = .sdata2:0x801F2230; // type:object size:0x4 scope:local data:float +lbl_801F2234 = .sdata2:0x801F2234; // type:object size:0x4 scope:local data:float +lbl_801F2238 = .sdata2:0x801F2238; // type:object size:0x4 scope:local data:float +lbl_801F223C = .sdata2:0x801F223C; // type:object size:0x4 scope:local data:float +lbl_801F2240 = .sdata2:0x801F2240; // type:object size:0x4 scope:local data:float +lbl_801F2244 = .sdata2:0x801F2244; // type:object size:0x4 scope:local data:float +lbl_801F2248 = .sdata2:0x801F2248; // type:object size:0x4 scope:local data:float +lbl_801F224C = .sdata2:0x801F224C; // type:object size:0x4 scope:local data:float +lbl_801F2250 = .sdata2:0x801F2250; // type:object size:0x8 scope:local data:double +lbl_801F2258 = .sdata2:0x801F2258; // type:object size:0x8 scope:local data:double +lbl_801F2260 = .sdata2:0x801F2260; // type:object size:0x4 scope:local data:float +lbl_801F2264 = .sdata2:0x801F2264; // type:object size:0x4 scope:local data:float lbl_801F2268 = .sdata2:0x801F2268; // type:object size:0x4 data:float lbl_801F2270 = .sdata2:0x801F2270; // type:object size:0x8 data:double lbl_801F2278 = .sdata2:0x801F2278; // type:object size:0x8 data:double diff --git a/configure.py b/configure.py index fea780ac..5e690faf 100644 --- a/configure.py +++ b/configure.py @@ -402,7 +402,7 @@ config.libs = [ Object(Matching, "game/frand.c"), Object(Matching, "game/audio.c"), Object(Matching, "game/EnvelopeExec.c"), - Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/minigame_seq.c"), + Object(Matching, "game/minigame_seq.c"), Object(Matching, "game/ovllist.c"), Object(Matching, "game/esprite.c"), Object(Matching, "game/code_8003FF68.c"), diff --git a/src/game/minigame_seq.c b/src/game/minigame_seq.c index ca883739..b163d790 100644 --- a/src/game/minigame_seq.c +++ b/src/game/minigame_seq.c @@ -1,36 +1,36 @@ #include "game/armem.h" -#include "game/sprite.h" -#include "game/process.h" +#include "game/disp.h" #include "game/gamework_data.h" -#include "game/objsub.h" -#include "game/object.h" #include "game/hsfman.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/sprite.h" #include "game/window.h" #include "game/wipe.h" -#include "game/pad.h" -#include "game/disp.h" #include "game/minigame_seq.h" #include "math.h" #include "stdarg.h" +#include "version.h" #undef abs #define ABS(x) (((x) < 0) ? -(x) : (x)) - extern s16 HuSysVWaitGet(s16 param); typedef struct seq_info { - SeqInitFunc init; - SeqUpdateFunc update; - float x; - float y; - float scale_x; - float scale_y; - s32 time_max; + SeqInitFunc init; + SeqUpdateFunc update; + float x; + float y; + float scale_x; + float scale_y; + s32 time_max; } SeqInfo; static s32 SeqInitTimer(SeqWork *work, va_list params); @@ -61,54 +61,41 @@ static s32 SeqUpdateFlip(SeqWork *work); OverlayID mgSeqOvlPrev = OVL_INVALID; static SeqInfo seqInfoTbl[] = { - { NULL, NULL, HU_DISP_CENTERX+4, HU_DISP_CENTERY, 1.0f, 1.0f, 60 }, - { SeqInitTimer, SeqUpdateTimer, HU_DISP_CENTERX+4, 64.0f, 1.0f, 1.0f, 60 }, - { SeqInitType2, SeqUpdateType2, HU_DISP_CENTERX+4, HU_DISP_CENTERY, 0.5f, 0.5f, 60 }, - { SeqInitMGBasic, SeqUpdateMGBasic, HU_DISP_CENTERX+4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, - { SeqInitMGCommon, SeqUpdateMG1vs3, HU_DISP_CENTERX+4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, - { SeqInitWin, SeqUpdateWin, HU_DISP_CENTERX+4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, - { SeqInitMGCommon, SeqUpdateMGBattle, HU_DISP_CENTERX+4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, - { SeqInitMGCommon, SeqUpdateMGStory, HU_DISP_CENTERX+4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, - { SeqInitMGBasic, SeqUpdateMGBasic, HU_DISP_CENTERX+4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, - { SeqInitMGCommon, SeqUpdateMG2vs2, HU_DISP_CENTERX+4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, - { SeqInitFlip, SeqUpdateFlip, HU_DISP_CENTERX+4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, - { SeqInitMGCommon, SeqUpdateMGBowser, HU_DISP_CENTERX+4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, - { SeqInitWin, SeqUpdateWin, HU_DISP_CENTERX+4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, - { SeqInitDraw, SeqUpdateDraw, HU_DISP_CENTERX+4, HU_DISP_CENTERY, 1.0f, 1.0f, 60 }, - { SeqInitRecord, SeqUpdateRecord, HU_DISP_CENTERX+4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, - { NULL, NULL, HU_DISP_CENTERX+4, HU_DISP_CENTERY, 1.0f, 1.0f, 60 }, - { NULL, NULL, HU_DISP_CENTERX+4, HU_DISP_CENTERY, 1.0f, 1.0f, 60 }, + { NULL, NULL, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 60 }, + { SeqInitTimer, SeqUpdateTimer, HU_DISP_CENTERX + 4, 64.0f, 1.0f, 1.0f, 60 }, + { SeqInitType2, SeqUpdateType2, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 0.5f, 0.5f, 60 }, + { SeqInitMGBasic, SeqUpdateMGBasic, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { SeqInitMGCommon, SeqUpdateMG1vs3, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { SeqInitWin, SeqUpdateWin, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { SeqInitMGCommon, SeqUpdateMGBattle, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { SeqInitMGCommon, SeqUpdateMGStory, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { SeqInitMGBasic, SeqUpdateMGBasic, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { SeqInitMGCommon, SeqUpdateMG2vs2, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { SeqInitFlip, SeqUpdateFlip, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { SeqInitMGCommon, SeqUpdateMGBowser, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { SeqInitWin, SeqUpdateWin, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { SeqInitDraw, SeqUpdateDraw, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 60 }, + { SeqInitRecord, SeqUpdateRecord, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { NULL, NULL, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 60 }, + { NULL, NULL, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 60 }, }; -static s32 seqType2SprTbl[6] = { - 0, 0, 0, 0, 0, 0 -}; +static s32 seqType2SprTbl[6] = { 0, 0, 0, 0, 0, 0 }; -static s16 mgSeqTypeTbl[9] = { - MG_SEQ_TYPE_4P, - MG_SEQ_TYPE_1VS3, - MG_SEQ_TYPE_2VS2, - MG_SEQ_TYPE_BOWSER, - MG_SEQ_TYPE_BATTLE, - MG_SEQ_TYPE_PINBALL, - MG_SEQ_TYPE_STORY, - MG_SEQ_TYPE_BOWSER, - MG_SEQ_TYPE_STORY -}; +static s16 mgSeqTypeTbl[9] = { MG_SEQ_TYPE_4P, MG_SEQ_TYPE_1VS3, MG_SEQ_TYPE_2VS2, MG_SEQ_TYPE_BOWSER, MG_SEQ_TYPE_BATTLE, MG_SEQ_TYPE_PINBALL, + MG_SEQ_TYPE_STORY, MG_SEQ_TYPE_BOWSER, MG_SEQ_TYPE_STORY }; -static char lbl_8012F336[] = { - "アイウエオカキク" - "ケコサシスセソタ" - "チツテトナニヌネ" - "ノハヒフヘホマミ" - "ムメモヤユヨラリ" - "ルレロワヲンァィ" - "ゥェォャュョッカ" - "キクコサシスセソ" - "タチツテトハヒフ" - "ヘホハヒフヘホ" - "!?ー" -}; +static char lbl_8012F336[] = { "アイウエオカキク" + "ケコサシスセソタ" + "チツテトナニヌネ" + "ノハヒフヘホマミ" + "ムメモヤユヨラリ" + "ルレロワヲンァィ" + "ゥェォャュョッカ" + "キクコサシスセソ" + "タチツテトハヒフ" + "ヘホハヒフヘホ" + "!?ー" }; static char lbl_8012F389[] = "x first\n"; static char lbl_8012F392[] = "y first\n"; @@ -129,645 +116,657 @@ static s32 seqLanguage; void fn_80036BC8(void); - void MGSeqInit(void) { - s32 i; - SeqWork *work; - work = &seqWorkData[0]; - for(i=8; i!=0; i--, work++) { - work->seq_no = 0; - work->data = NULL; - } - seqPauseF = 0; - seqDoneF = 0; - lbl_801D3D94 = 0; - seqTimer = 30; - HuAR_DVDtoARAM(DATADIR_GAMEMES); - HuAR_DVDtoARAM(DATADIR_MGCONST); - while(HuARDMACheck()); - fn_80036BC8(); - mgSeqOvlPrev = -1; - seqLanguage = GWLanguageGet(); + s32 i; + SeqWork *work; + work = &seqWorkData[0]; + for (i = 8; i != 0; i--, work++) { + work->seq_no = 0; + work->data = NULL; + } + seqPauseF = 0; + seqDoneF = 0; + lbl_801D3D94 = 0; + seqTimer = 30; + HuAR_DVDtoARAM(DATADIR_GAMEMES); + HuAR_DVDtoARAM(DATADIR_MGCONST); + while (HuARDMACheck()) + ; + fn_80036BC8(); + mgSeqOvlPrev = -1; + seqLanguage = GWLanguageGet(); } void MGSeqMain(void) { - SeqInfo *info; - s32 i; - s32 j; - s32 alive_flag; - u8 stat; - SeqWork *work; - - seqSpeed = HuSysVWaitGet(seqSpeed); - if(Hu3DPauseF) { - return; - } - alive_flag = 0; - stat = 0; - work = &seqWorkData[0]; - for(i=0; i<8; i++, work++) { - if(work->stat == 0) { - continue; - } - if(work->update) { - alive_flag = work->update(work); - } else { - info = &seqInfoTbl[work->seq_no]; - if(work->seq_no != 0 && NULL != info->update) { - alive_flag = info->update(work); - } - } - if(!alive_flag) { - work->stat = 0; - if(!lbl_801D3D94) { - for(j=0; j<8; j++) { - if(seqWorkData[j].stat) { - break; - } - } - } - if(!work->data) { - HuMemDirectFree(work->data); - work->data = NULL; - } - } - stat |= work->stat; - } - if(!stat || stat & 0x4) { - if(seqTimer > 0) { - seqTimer -= seqSpeed; - } - } + SeqInfo *info; + s32 i; + s32 j; + s32 alive_flag; + u8 stat; + SeqWork *work; + + seqSpeed = HuSysVWaitGet(seqSpeed); + if (Hu3DPauseF) { + return; + } + alive_flag = 0; + stat = 0; + work = &seqWorkData[0]; + for (i = 0; i < 8; i++, work++) { + if (work->stat == 0) { + continue; + } + if (work->update) { + alive_flag = work->update(work); + } + else { + info = &seqInfoTbl[work->seq_no]; + if (work->seq_no != 0 && NULL != info->update) { + alive_flag = info->update(work); + } + } + if (!alive_flag) { + work->stat = 0; + if (!lbl_801D3D94) { + for (j = 0; j < 8; j++) { + if (seqWorkData[j].stat) { + break; + } + } + } + if (!work->data) { + HuMemDirectFree(work->data); + work->data = NULL; + } + } + stat |= work->stat; + } + if (!stat || stat & 0x4) { + if (seqTimer > 0) { + seqTimer -= seqSpeed; + } + } } static s16 CreateSeq(s16 seq_no, va_list params) { - SeqWork *work; - SeqInfo *info; - s32 i; - s32 temp; - work = seqWorkData; - info = &seqInfoTbl[(u8)seq_no]; - for(i=0; i<8; i++, work++) { - if(work->stat == 0) { - break; - } - } - if(i >= 8) { - return -1; - } - work->stat |= 0x1; - if(work->data) { - HuMemDirectFree(work->data); - } - work->data = NULL; - work->seq_no = (u8)seq_no; - work->time = 0; - work->x = info->x; - work->y = info->y; - work->scale_x = info->scale_x; - work->scale_y = info->scale_y; - work->unk_18 = 0.0f; - work->unk_7D = 255; - work->time_max = info->time_max; - work->timer_val = work->state = work->alt_word_len = work->word_len = 0; - work->angle = work->win_scale = 0.0f; - work->param[0] = work->param[1] = 0; - for(temp=0; temp<16; temp++) { - work->sprite[temp] = work->spr_grp[temp] = -1; - } - if(NULL != info->init) { - temp = info->init(work, params); - if(temp == 0) { - work->stat = 0; - return -1; - } - } - seqTimer = 30; - return i; + SeqWork *work; + SeqInfo *info; + s32 i; + s32 temp; + work = seqWorkData; + info = &seqInfoTbl[(u8)seq_no]; + for (i = 0; i < 8; i++, work++) { + if (work->stat == 0) { + break; + } + } + if (i >= 8) { + return -1; + } + work->stat |= 0x1; + if (work->data) { + HuMemDirectFree(work->data); + } + work->data = NULL; + work->seq_no = (u8)seq_no; + work->time = 0; + work->x = info->x; + work->y = info->y; + work->scale_x = info->scale_x; + work->scale_y = info->scale_y; + work->unk_18 = 0.0f; + work->unk_7D = 255; + work->time_max = info->time_max; + work->timer_val = work->state = work->alt_word_len = work->word_len = 0; + work->angle = work->win_scale = 0.0f; + work->param[0] = work->param[1] = 0; + for (temp = 0; temp < 16; temp++) { + work->sprite[temp] = work->spr_grp[temp] = -1; + } + if (NULL != info->init) { + temp = info->init(work, params); + if (temp == 0) { + work->stat = 0; + return -1; + } + } + seqTimer = 30; + return i; } s16 MGSeqCreate(s16 type, ...) { - s16 ret; - va_list params; - va_start(params, type); - if(type == MG_SEQ_TYPE_AUTO) { - if(GWSystem.mg_next == 0xFFFF) { - type = MG_SEQ_TYPE_4P; - } else { - type = mgSeqTypeTbl[mgInfoTbl[GWSystem.mg_next].type]; - } - } - ret = CreateSeq(type, params); - va_end(params); - return ret; + s16 ret; + va_list params; + va_start(params, type); + if (type == MG_SEQ_TYPE_AUTO) { + if (GWSystem.mg_next == 0xFFFF) { + type = MG_SEQ_TYPE_4P; + } + else { + type = mgSeqTypeTbl[mgInfoTbl[GWSystem.mg_next].type]; + } + } + ret = CreateSeq(type, params); + va_end(params); + return ret; } u8 MGSeqStatGet(s16 id) { - SeqWork *work; - u8 ret = 0; - if(id < 0) { - s32 i; - work = seqWorkData; - for(i=8; i != 0; i--, work++) { - ret |= work->stat; - } - } else { - if(id < 8) { - ret = seqWorkData[id].stat; - } - } - return ret; + SeqWork *work; + u8 ret = 0; + if (id < 0) { + s32 i; + work = seqWorkData; + for (i = 8; i != 0; i--, work++) { + ret |= work->stat; + } + } + else { + if (id < 8) { + ret = seqWorkData[id].stat; + } + } + return ret; } void MGSeqPosSet(s16 id, float x, float y) { - if(id >= 0 && id < 8) { - seqWorkData[id].x = x; - seqWorkData[id].y = y; - } + if (id >= 0 && id < 8) { + seqWorkData[id].x = x; + seqWorkData[id].y = y; + } } void MGSeqParamSet(s16 id, s16 param1, s16 param2) { - if(id >= 0 && id < 8) { - seqWorkData[id].param[0] = param1; - seqWorkData[id].param[1] = param2; - } + if (id >= 0 && id < 8) { + seqWorkData[id].param[0] = param1; + seqWorkData[id].param[1] = param2; + } } void MGSeqKill(s16 id) { - if(id >= 0 && id < 8) { - if(seqWorkData[id].stat != 0) { - seqWorkData[id].stat = 8; - } - } + if (id >= 0 && id < 8) { + if (seqWorkData[id].stat != 0) { + seqWorkData[id].stat = 8; + } + } } void MGSeqKillAll(void) { - seqDoneF = 1; - MGSeqMain(); - seqDoneF = 0; - MGSeqStub(); - lbl_801D3D94 = 0; + seqDoneF = 1; + MGSeqMain(); + seqDoneF = 0; + MGSeqStub(); + lbl_801D3D94 = 0; } s32 MGSeqDoneCheck(void) { - u8 stat = MGSeqStatGet(-1); - if(stat == 0 || (stat & 0xC)) { - if(seqTimer <= 0 || (stat & 0x8)) { - return 1; - } - } - return 0; + u8 stat = MGSeqStatGet(-1); + if (stat == 0 || (stat & 0xC)) { + if (seqTimer <= 0 || (stat & 0x8)) { + return 1; + } + } + return 0; } -void MGSeqStub(void) -{ - -} +void MGSeqStub(void) { } void MGSeqSprKill(SeqWork *work) { - s32 i; - for(i=0; i<16; i++) { - if(work->spr_grp[i] >= 0) { - HuSprGrpKill(work->spr_grp[i]); - } - if(work->sprite[i] >= 0) { - HuSprKill(work->sprite[i]); - } - } + s32 i; + for (i = 0; i < 16; i++) { + if (work->spr_grp[i] >= 0) { + HuSprGrpKill(work->spr_grp[i]); + } + if (work->sprite[i] >= 0) { + HuSprKill(work->sprite[i]); + } + } } static void *SeqReadFile(s32 file) { - return HuAR_ARAMtoMRAMFileRead(file, MEMORY_DEFAULT_NUM, HEAP_DATA); + return HuAR_ARAMtoMRAMFileRead(file, MEMORY_DEFAULT_NUM, HEAP_DATA); } static s32 SeqInitTimer(SeqWork *work, va_list params) { - AnimData *spr_anim; - s16 sprite; - s16 spr_grp; - int duration, x, y; - s16 i; - - duration = va_arg(params, int); - x = va_arg(params, int); - y = va_arg(params, int); - if(duration <= 0 && duration > 99) { - duration = 99; - } - work->timer_val = duration; - if(x >= 0) { - work->x = x; - } - if(y >= 0) { - work->y = y; - } - work->alt_word_len = 0; - work->state = 2; - work->angle = 0; - work->spr_grp[0] = spr_grp = HuSprGrpCreate(4); - HuSprGrpScaleSet(spr_grp, work->scale_x, work->scale_y); - spr_anim = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 2))); - x = 12; - for(i=0; i<2; i++) { - sprite = HuSprCreate(spr_anim, 5, 0); - HuSprGrpMemberSet(spr_grp, i, sprite); - HuSprSpeedSet(spr_grp, i, 0); - HuSprPosSet(spr_grp, i, x, 0); - HuSprColorSet(spr_grp, i, 112, 233, 255); - x -= 24; - (void)i; //Hack for Matching - } - spr_anim = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 1))); - sprite = HuSprCreate(spr_anim, 7, 0); - HuSprGrpMemberSet(spr_grp, 2, sprite); - HuSprPosSet(spr_grp, 2, 0, 0); - HuSprTPLvlSet(spr_grp, 2, 0.5f); - HuSprColorSet(spr_grp, 2, 0, 0, 0); - spr_anim = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 0))); - sprite = HuSprCreate(spr_anim, 6, 0); - HuSprGrpMemberSet(spr_grp, 3, sprite); - HuSprPosSet(spr_grp, 3, 0, 0); - if(seqPauseF) { - work->state = 1; - for(i=0; i<2; i++) { - HuSprAttrSet(spr_grp, i, HUSPR_ATTR_DISPOFF); - (void)i; //Hack for Matching - } - } - return 1; + AnimData *spr_anim; + s16 sprite; + s16 spr_grp; + int duration, x, y; + s16 i; + + duration = va_arg(params, int); + x = va_arg(params, int); + y = va_arg(params, int); + if (duration <= 0 && duration > 99) { + duration = 99; + } + work->timer_val = duration; + if (x >= 0) { + work->x = x; + } + if (y >= 0) { + work->y = y; + } + work->alt_word_len = 0; + work->state = 2; + work->angle = 0; + work->spr_grp[0] = spr_grp = HuSprGrpCreate(4); + HuSprGrpScaleSet(spr_grp, work->scale_x, work->scale_y); + spr_anim = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 2))); + x = 12; + for (i = 0; i < 2; i++) { + sprite = HuSprCreate(spr_anim, 5, 0); + HuSprGrpMemberSet(spr_grp, i, sprite); + HuSprSpeedSet(spr_grp, i, 0); + HuSprPosSet(spr_grp, i, x, 0); + HuSprColorSet(spr_grp, i, 112, 233, 255); + x -= 24; + (void)i; // Hack for Matching + } + spr_anim = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 1))); + sprite = HuSprCreate(spr_anim, 7, 0); + HuSprGrpMemberSet(spr_grp, 2, sprite); + HuSprPosSet(spr_grp, 2, 0, 0); + HuSprTPLvlSet(spr_grp, 2, 0.5f); + HuSprColorSet(spr_grp, 2, 0, 0, 0); + spr_anim = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 0))); + sprite = HuSprCreate(spr_anim, 6, 0); + HuSprGrpMemberSet(spr_grp, 3, sprite); + HuSprPosSet(spr_grp, 3, 0, 0); + if (seqPauseF) { + work->state = 1; + for (i = 0; i < 2; i++) { + HuSprAttrSet(spr_grp, i, HUSPR_ATTR_DISPOFF); +#if VERSION_NTSC + //(void)i; //Hack for Matching +#endif + } + } +#if VERSION_PAL + HuSprGrpPosSet(spr_grp, -1000.0f, 0.0f); +#endif + return 1; } static s32 SeqUpdateTimer(SeqWork *work) { - float scale; - float tp_lvl; - u8 digits[2]; - s16 i; - s16 spr_grp = work->spr_grp[0]; - if(work->param[0] != 0 && work->state != -1) { - switch(work->param[0]) { - case 2: - switch(work->param[1]) { - case -1: - work->stat |= 0x4; - work->state = -1; - work->angle = 0.0f; - break; - - case 0: - work->state = 2; - work->angle = 0.0f; - break; - - case 1: - work->state = 3; - work->angle = 0.0f; - break; - - default: - break; - } - work->param[0] = 0; - break; - - case 1: - if(work->param[1] < 0 && !(work->stat & 0x4)) { - work->stat |= 0x4; - work->state = -1; - work->angle = 0.0f; - } else { - if(work->param[1] > 99) { - work->timer_val = 99; - } else { - if(work->timer_val != work->param[1]) { - work->timer_val = work->param[1]; - if(work->param[1] <= 5) { - HuAudFXPlay(6); - work->state = 3; - work->angle = 0.0f; - HuSprColorSet(spr_grp, 0, 255, 112, 160); - HuSprColorSet(spr_grp, 1, 255, 112, 160); - } else { - HuSprColorSet(spr_grp, 0, 112, 233, 255); - HuSprColorSet(spr_grp, 1, 112, 233, 255); - } - } - } - } - work->param[0] = 0; - break; - - case 3: - for(i=0; i<2; i++) { - HuSprAttrReset(spr_grp, i, HUSPR_ATTR_DISPOFF); - } - work->state = 3; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - if(work->state == 1) { - return 1; - } - if(work->timer_val > 99) { - digits[0] = digits[1] = 9; - } else { - s32 value; - value = work->timer_val/10; - digits[1] = value; - digits[0] = work->timer_val-(value*10); - } - HuSprGrpPosSet(spr_grp, work->x, work->y); - HuSprGrpScaleSet(spr_grp, work->scale_x, work->scale_y); - for(i=0; i<2; i++) { - HuSprBankSet(spr_grp, i, digits[i]); - } - if(work->state != 0) { - switch(work->state) { - case 2: - { - float scale_x, scale_y; - scale = fabs(((sin((work->angle*M_PI)/180)*5.0f)+1.0f)-(sin((130*M_PI)/180)*5.0f)); - scale_x = work->scale_x*scale; - scale_y = work->scale_y*scale; - work->angle += seqSpeed*5.0f; - if(work->angle > 130.0f) { - work->state = 0; - break; - } - HuSprGrpScaleSet(spr_grp, scale_x, scale_y); - } - break; - - case 3: - { - scale = sin((work->angle*M_PI)/180)+1.0; - tp_lvl = 1.0-(sin((work->angle*M_PI)/180)*0.5); - work->angle += seqSpeed*18.0f; - if(work->angle > 180.0f) { - work->state = 0; - scale = 1.0f; - tp_lvl = 1.0f; - } - for(i=0; i<2; i++) { - HuSprScaleSet(spr_grp, i, scale, scale); - HuSprTPLvlSet(spr_grp, i, tp_lvl); - } - } - break; - - case -1: - HuSprGrpScaleSet(spr_grp, work->scale_x, work->scale_y); - for(i=0; i<2; i++) { - HuSprScaleSet(spr_grp, i, 1.0f, 1.0f); - } - work->angle += 1.0f; - if(work->angle < 60.0f) { - break; - } - tp_lvl = 1.0-((work->angle-60.0f)/20.0f); - if(tp_lvl <= 0.0f) { - tp_lvl = 0.0f; - work->state = 0; - work->stat |= 0x8; - } - - for(i=0; i<4; i++) { - HuSprTPLvlSet(spr_grp, i, tp_lvl); - } - break; - - default: - break; - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } else { - return 1; - } + float scale; + float tp_lvl; + u8 digits[2]; + s16 i; + s16 spr_grp = work->spr_grp[0]; + if (work->param[0] != 0 && work->state != -1) { + switch (work->param[0]) { + case 2: + switch (work->param[1]) { + case -1: + work->stat |= 0x4; + work->state = -1; + work->angle = 0.0f; + break; + + case 0: + work->state = 2; + work->angle = 0.0f; + break; + + case 1: + work->state = 3; + work->angle = 0.0f; + break; + + default: + break; + } + work->param[0] = 0; + break; + + case 1: + if (work->param[1] < 0 && !(work->stat & 0x4)) { + work->stat |= 0x4; + work->state = -1; + work->angle = 0.0f; + } + else { + if (work->param[1] > 99) { + work->timer_val = 99; + } + else { + if (work->timer_val != work->param[1]) { + work->timer_val = work->param[1]; + if (work->param[1] <= 5) { + HuAudFXPlay(6); + work->state = 3; + work->angle = 0.0f; + HuSprColorSet(spr_grp, 0, 255, 112, 160); + HuSprColorSet(spr_grp, 1, 255, 112, 160); + } + else { + HuSprColorSet(spr_grp, 0, 112, 233, 255); + HuSprColorSet(spr_grp, 1, 112, 233, 255); + } + } + } + } + work->param[0] = 0; + break; + + case 3: + for (i = 0; i < 2; i++) { + HuSprAttrReset(spr_grp, i, HUSPR_ATTR_DISPOFF); + } + work->state = 3; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + if (work->state == 1) { + return 1; + } + if (work->timer_val > 99) { + digits[0] = digits[1] = 9; + } + else { + s32 value; + value = work->timer_val / 10; + digits[1] = value; + digits[0] = work->timer_val - (value * 10); + } + HuSprGrpPosSet(spr_grp, work->x, work->y); + HuSprGrpScaleSet(spr_grp, work->scale_x, work->scale_y); + for (i = 0; i < 2; i++) { + HuSprBankSet(spr_grp, i, digits[i]); + } + if (work->state != 0) { + switch (work->state) { + case 2: { + float scale_x, scale_y; + scale = fabs(((sin((work->angle * M_PI) / 180) * 5.0f) + 1.0f) - (sin((130 * M_PI) / 180) * 5.0f)); + scale_x = work->scale_x * scale; + scale_y = work->scale_y * scale; + work->angle += seqSpeed * 5.0f; + if (work->angle > 130.0f) { + work->state = 0; + break; + } + HuSprGrpScaleSet(spr_grp, scale_x, scale_y); + } break; + + case 3: { + scale = sin((work->angle * M_PI) / 180) + 1.0; + tp_lvl = 1.0 - (sin((work->angle * M_PI) / 180) * 0.5); + work->angle += seqSpeed * 18.0f; + if (work->angle > 180.0f) { + work->state = 0; + scale = 1.0f; + tp_lvl = 1.0f; + } + for (i = 0; i < 2; i++) { + HuSprScaleSet(spr_grp, i, scale, scale); + HuSprTPLvlSet(spr_grp, i, tp_lvl); + } + } break; + + case -1: + HuSprGrpScaleSet(spr_grp, work->scale_x, work->scale_y); + for (i = 0; i < 2; i++) { + HuSprScaleSet(spr_grp, i, 1.0f, 1.0f); + } + work->angle += 1.0f; + if (work->angle < 60.0f) { + break; + } + tp_lvl = 1.0 - ((work->angle - 60.0f) / 20.0f); + if (tp_lvl <= 0.0f) { + tp_lvl = 0.0f; + work->state = 0; + work->stat |= 0x8; + } + + for (i = 0; i < 4; i++) { + HuSprTPLvlSet(spr_grp, i, tp_lvl); + } + break; + + default: + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + else { + return 1; + } } static s32 SeqInitType2(SeqWork *work, va_list params) { - s16 spr_idx; - s16 spr_grp; - AnimData *anim_tbl[6]; - s32 i; - s16 len; - char *str; - char c; - int time_max; - int x, y; - work->data = va_arg(params, void *); - time_max = va_arg(params, int); - x = va_arg(params, int); - y = va_arg(params, int); - if(time_max < 0) { - time_max = -1; - } - work->time_max = time_max; - if(x >= 0) { - work->x = x; - } - if(y >= 0) { - work->y = y; - } - work->state = 0; - work->angle = 0.0f; - x = 0; - len = 0; - str=work->data; - while(c=*str++) { - if(c >= '0' && c <= '9') { - x |= 1; - len++; - } else if(c >= 'A' && c <= 'Z') { - x |= 2; - len++; - } else if(c >= 'a' && c <= 'z') { - x |= 4; - len++; - } else if(c == '!' || c == '?') { - x |= 8; - len++; - } - } - work->word_len = len; - for(i=0; i<6; i++) { - if(x & (1 << i)) { - anim_tbl[i] = HuSprAnimRead(SeqReadFile(seqType2SprTbl[i])); - } else { - anim_tbl[i] = NULL; - } - } - work->spr_grp[0] = spr_grp = HuSprGrpCreate(len); - x = 0; - spr_idx = 0; - str=work->data; - while(c=*str++) { - i = -2; - if(c >= '0' && c <= '9') { - c -= '0'; - i = 0; - } else if(c >= 'A' && c <= 'Z') { - c -= 'A'; - i = 1; - } else if(c >= 'a' && c <= 'z') { - c -= 'a'; - i = 2; - } else if(c == '!' || c == '?') { - if(c == '!') { - c = 0; - } else { - c = 1; - } - i = 3; - } else if(c == ' ') { - i = -1; - } - work->alt_word_len = x; - if(i == -1) { - x += 32; - } else if(i >= 0) { - s16 sprite = HuSprCreate(anim_tbl[i], 5, c); - HuSprGrpMemberSet(spr_grp, spr_idx, sprite); - HuSprSpeedSet(spr_grp, spr_idx, 0.0f); - HuSprPosSet(spr_grp, spr_idx, x, 0.0f); - spr_idx++; - x += 64; - } - } - if(seqPauseF) { - work->state = 1; - for(i=0; iword_len; i++) { - HuSprAttrSet(spr_grp, i, HUSPR_ATTR_DISPOFF); - } - } - return 1; + s16 spr_idx; + s16 spr_grp; + AnimData *anim_tbl[6]; + s32 i; + s16 len; + char *str; + char c; + int time_max; + int x, y; + work->data = va_arg(params, void *); + time_max = va_arg(params, int); + x = va_arg(params, int); + y = va_arg(params, int); + if (time_max < 0) { + time_max = -1; + } + work->time_max = time_max; + if (x >= 0) { + work->x = x; + } + if (y >= 0) { + work->y = y; + } + work->state = 0; + work->angle = 0.0f; + x = 0; + len = 0; + str = work->data; + while (c = *str++) { + if (c >= '0' && c <= '9') { + x |= 1; + len++; + } + else if (c >= 'A' && c <= 'Z') { + x |= 2; + len++; + } + else if (c >= 'a' && c <= 'z') { + x |= 4; + len++; + } + else if (c == '!' || c == '?') { + x |= 8; + len++; + } + } + work->word_len = len; + for (i = 0; i < 6; i++) { + if (x & (1 << i)) { + anim_tbl[i] = HuSprAnimRead(SeqReadFile(seqType2SprTbl[i])); + } + else { + anim_tbl[i] = NULL; + } + } + work->spr_grp[0] = spr_grp = HuSprGrpCreate(len); + x = 0; + spr_idx = 0; + str = work->data; + while (c = *str++) { + i = -2; + if (c >= '0' && c <= '9') { + c -= '0'; + i = 0; + } + else if (c >= 'A' && c <= 'Z') { + c -= 'A'; + i = 1; + } + else if (c >= 'a' && c <= 'z') { + c -= 'a'; + i = 2; + } + else if (c == '!' || c == '?') { + if (c == '!') { + c = 0; + } + else { + c = 1; + } + i = 3; + } + else if (c == ' ') { + i = -1; + } + work->alt_word_len = x; + if (i == -1) { + x += 32; + } + else if (i >= 0) { + s16 sprite = HuSprCreate(anim_tbl[i], 5, c); + HuSprGrpMemberSet(spr_grp, spr_idx, sprite); + HuSprSpeedSet(spr_grp, spr_idx, 0.0f); + HuSprPosSet(spr_grp, spr_idx, x, 0.0f); + spr_idx++; + x += 64; + } + } + if (seqPauseF) { + work->state = 1; + for (i = 0; i < work->word_len; i++) { + HuSprAttrSet(spr_grp, i, HUSPR_ATTR_DISPOFF); + } + } + return 1; } static s32 SeqUpdateType2(SeqWork *work) { - float tp_lvl; - s16 spr_grp; - spr_grp = work->spr_grp[0]; - HuSprGrpPosSet(spr_grp, work->x-((0.5f*work->scale_x)*work->alt_word_len), work->y); - HuSprGrpScaleSet(spr_grp, work->scale_x, work->scale_y); - if(work->param[0] != 0 && work->state != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->state = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - { - s32 i; - for(i=0; iword_len; i++) { - HuSprAttrReset(spr_grp, i, HUSPR_ATTR_DISPOFF); - (void)i; - } - work->state = 0; - work->param[0] = 0; - } - break; - - default: - work->param[0] = 0; - break; - } - } - if(work->state == 1) { - return 1; - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->state != -1) { - work->stat |= 0x4; - work->state = -1; - work->angle = 0.0f; - } - if(work->state != 0) { - if(work->state != -1) { - (void)work; //HACK: to introduce extra branch - } else { - s16 i; - work->angle += seqSpeed*0.1f; - tp_lvl = 1.0f-work->angle; - if(tp_lvl <= 0.0f) { - tp_lvl = 0.0f; - work->state = 0; - work->stat |= 0x8; - } - for(i=0; iword_len; i++) { - HuSprTPLvlSet(spr_grp, i, tp_lvl); - (void)i; - } - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } else { - return 1; - } + float tp_lvl; + s16 spr_grp; + spr_grp = work->spr_grp[0]; + HuSprGrpPosSet(spr_grp, work->x - ((0.5f * work->scale_x) * work->alt_word_len), work->y); + HuSprGrpScaleSet(spr_grp, work->scale_x, work->scale_y); + if (work->param[0] != 0 && work->state != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->state = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: { + s32 i; + for (i = 0; i < work->word_len; i++) { + HuSprAttrReset(spr_grp, i, HUSPR_ATTR_DISPOFF); + (void)i; + } + work->state = 0; + work->param[0] = 0; + } break; + + default: + work->param[0] = 0; + break; + } + } + if (work->state == 1) { + return 1; + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->state != -1) { + work->stat |= 0x4; + work->state = -1; + work->angle = 0.0f; + } + if (work->state != 0) { + if (work->state != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + s16 i; + work->angle += seqSpeed * 0.1f; + tp_lvl = 1.0f - work->angle; + if (tp_lvl <= 0.0f) { + tp_lvl = 0.0f; + work->state = 0; + work->stat |= 0x8; + } + for (i = 0; i < work->word_len; i++) { + HuSprTPLvlSet(spr_grp, i, tp_lvl); + (void)i; + } + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + else { + return 1; + } } +static char seqFontAlphaTbl[] = { "ABCDEFGH" + "IJKLMNOP" + "QRSTUVWX" + "YZabcdef" + "ghijklmn" + "opqrstuv" + "wxyz" }; -static char seqFontAlphaTbl[] = { - "ABCDEFGH" - "IJKLMNOP" - "QRSTUVWX" - "YZabcdef" - "ghijklmn" - "opqrstuv" - "wxyz" -}; - -static char seqFontKanaTbl[] = { - "アイウエオカキク" - "ケコサシスセソタ" - "チツテトナニヌネ" - "ノハヒフヘホマミ" - "ムメモヤユヨラリ" - "ルレロワヲンァィ" - "ゥェォャュョッカ" - "キクケコサシスセ" - "ソタチツテトハヒ" - "フヘホハヒフヘホ" - "ー" -}; +static char seqFontKanaTbl[] = { "アイウエオカキク" + "ケコサシスセソタ" + "チツテトナニヌネ" + "ノハヒフヘホマミ" + "ムメモヤユヨラリ" + "ルレロワヲンァィ" + "ゥェォャュョッカ" + "キクケコサシスセ" + "ソタチツテトハヒ" + "フヘホハヒフヘホ" + "ー" }; static char seqFontNumTbl[] = "0123456789"; -static s32 *letterBufTbl[5] = { }; +static s32 *letterBufTbl[5] = {}; static char wordStartE[] = "START!"; @@ -783,2772 +782,2786 @@ static char wordFinishE[] = "FINISH!"; static char wordDrawE[] = "DRAW!"; static char *wordMgTbl[6] = { - wordStartJ, wordFinishJ, wordDrawJ, - wordStartE, wordFinishE, wordDrawE, + wordStartJ, + wordFinishJ, + wordDrawJ, + wordStartE, + wordFinishE, + wordDrawE, }; void fn_80036BC8(void) { - if(!letterBufTbl[0]) { - letterBufTbl[0] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32)*strlen(seqFontAlphaTbl)); - memset(letterBufTbl[0], 0, sizeof(s32)*strlen(seqFontAlphaTbl)); - } - if(!letterBufTbl[1]) { - letterBufTbl[1] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32)*strlen(seqFontKanaTbl)); - memset(letterBufTbl[1], 0, sizeof(s32)*strlen(seqFontKanaTbl)); - } - if(!letterBufTbl[2]) { - letterBufTbl[2] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32)*strlen(seqFontKanaTbl)); - memset(letterBufTbl[2], 0, sizeof(s32)*strlen(seqFontKanaTbl)); - } - if(!letterBufTbl[3]) { - letterBufTbl[3] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32)*strlen(seqFontNumTbl)); - memset(letterBufTbl[3], 0, sizeof(s32)*strlen(seqFontNumTbl)); - } - if(!letterBufTbl[4]) { - letterBufTbl[4] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32)*strlen(seqPunctTbl)); - memset(letterBufTbl[4], 0, sizeof(s32)*strlen(seqPunctTbl)); - } + if (!letterBufTbl[0]) { + letterBufTbl[0] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32) * strlen(seqFontAlphaTbl)); + memset(letterBufTbl[0], 0, sizeof(s32) * strlen(seqFontAlphaTbl)); + } + if (!letterBufTbl[1]) { + letterBufTbl[1] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32) * strlen(seqFontKanaTbl)); + memset(letterBufTbl[1], 0, sizeof(s32) * strlen(seqFontKanaTbl)); + } + if (!letterBufTbl[2]) { + letterBufTbl[2] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32) * strlen(seqFontKanaTbl)); + memset(letterBufTbl[2], 0, sizeof(s32) * strlen(seqFontKanaTbl)); + } + if (!letterBufTbl[3]) { + letterBufTbl[3] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32) * strlen(seqFontNumTbl)); + memset(letterBufTbl[3], 0, sizeof(s32) * strlen(seqFontNumTbl)); + } + if (!letterBufTbl[4]) { + letterBufTbl[4] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32) * strlen(seqPunctTbl)); + memset(letterBufTbl[4], 0, sizeof(s32) * strlen(seqPunctTbl)); + } } static AnimData *SeqLoadFontChar(char *str, s16 flags); static s32 SeqMakeWord(SeqWork *work, char *str, s16 flags) { - s16 *char_pos; - char *str_ptr; - s16 spr_grp; - s16 i; - s16 x; - s16 grp_idx; - s16 len; - AnimData **char_anim; - for(grp_idx=0; grp_idx<16; grp_idx++) { - if(work->spr_grp[grp_idx] == -1) { - break; - } - } - if(grp_idx == 16) { - return -1; - } - char_anim = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(AnimData *)*100); - char_pos = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s16)*100); - str_ptr = str; - x = 0; - len = 0; - while(*str_ptr != 0) { - char_anim[len] = SeqLoadFontChar(str_ptr, flags); - if(char_anim[len]) { - char_pos[len] = x; - x += 56; - len++; - } - str_ptr++; - } - work->spr_grp[grp_idx] = spr_grp = HuSprGrpCreate(len); - x = (x/2)-28; - for(i=0; iword_len = len; - HuMemDirectFree(char_anim); - HuMemDirectFree(char_pos); - return grp_idx; + s16 *char_pos; + char *str_ptr; + s16 spr_grp; + s16 i; + s16 x; + s16 grp_idx; + s16 len; + AnimData **char_anim; + for (grp_idx = 0; grp_idx < 16; grp_idx++) { + if (work->spr_grp[grp_idx] == -1) { + break; + } + } + if (grp_idx == 16) { + return -1; + } + char_anim = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(AnimData *) * 100); + char_pos = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s16) * 100); + str_ptr = str; + x = 0; + len = 0; + while (*str_ptr != 0) { + char_anim[len] = SeqLoadFontChar(str_ptr, flags); + if (char_anim[len]) { + char_pos[len] = x; + x += 56; + len++; + } + str_ptr++; + } + work->spr_grp[grp_idx] = spr_grp = HuSprGrpCreate(len); + x = (x / 2) - 28; + for (i = 0; i < len; i++) { + s16 sprite = HuSprCreate(char_anim[i], 5, 0); + HuSprGrpMemberSet(spr_grp, i, sprite); + HuSprPosSet(spr_grp, i, char_pos[i] - x, 0.0f); + } + work->word_len = len; + HuMemDirectFree(char_anim); + HuMemDirectFree(char_pos); + return grp_idx; } static AnimData *SeqLoadFontChar(char *str, s16 flags) { - s32 data_num; - s16 id; - char *list; - char c = *str; - if(c == 222 || c == 223) { - return NULL; - } - if(c == 32) { - return HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 10))); - } - for(id = 0, list=seqFontAlphaTbl; *list != 0; id++, list++) { - if(*list == c) { - data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id+21); - return HuSprAnimRead(SeqReadFile(data_num)); - } - } - for(id = 0, list=seqFontNumTbl; *list != 0; id++, list++) { - if(*list == c) { - data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id+11); - return HuSprAnimRead(SeqReadFile(data_num)); - } - } - for(id = 0, list=seqPunctTbl; *list != 0; id++, list++) { - if(*list == c) { - data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id+154); - return HuSprAnimRead(SeqReadFile(data_num)); - } - } - if(str[1] == 222) { //゛ - list = seqFontKanaTbl; - list += 55; - id = 55; - } else if(str[1] == 223) { //゜ - list = seqFontKanaTbl; - list += 75; - id = 75; - } else { - list = seqFontKanaTbl; - id = 0; - } - while(*list != 0) { - if(*list == c) { - if(flags & 0x1) { - data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id+156); - } else { - data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id+73); - } - return HuSprAnimRead(SeqReadFile(data_num)); - } - id++; - list++; - } - return NULL; + s32 data_num; + s16 id; + char *list; + char c = *str; + if (c == 222 || c == 223) { + return NULL; + } + if (c == 32) { + return HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 10))); + } + for (id = 0, list = seqFontAlphaTbl; *list != 0; id++, list++) { + if (*list == c) { + data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + 21); + return HuSprAnimRead(SeqReadFile(data_num)); + } + } + for (id = 0, list = seqFontNumTbl; *list != 0; id++, list++) { + if (*list == c) { + data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + 11); + return HuSprAnimRead(SeqReadFile(data_num)); + } + } + for (id = 0, list = seqPunctTbl; *list != 0; id++, list++) { + if (*list == c) { + data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + 154); + return HuSprAnimRead(SeqReadFile(data_num)); + } + } + if (str[1] == 222) { // ゛ + list = seqFontKanaTbl; + list += 55; + id = 55; + } + else if (str[1] == 223) { // ゜ + list = seqFontKanaTbl; + list += 75; + id = 75; + } + else { + list = seqFontKanaTbl; + id = 0; + } + while (*list != 0) { + if (*list == c) { + if (flags & 0x1) { + data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + 156); + } + else { + data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + 73); + } + return HuSprAnimRead(SeqReadFile(data_num)); + } + id++; + list++; + } + return NULL; } static float ForceDefine480() { - return 480.0f; + return 480.0f; } static void SeqPlayStartFX(void); static s32 SeqInitMGBasic(SeqWork *work, va_list params) { - s16 i; - s16 word_grp; - - work->state = va_arg(params, int); - if(work->state == 2) { - return SeqInitDraw(work, params); - } - work->type = 0; - work->angle = 0; - - { - s32 word_katakana; - s32 word_flag; - s32 word_ofs; - word_katakana = 0; - if(work->state == 2 && seqLanguage == 0) { - word_katakana = 1; - } - if(word_katakana) { - word_flag = 1; - } else { - word_flag = 0; - } - if(seqLanguage == 0) { - word_ofs = 0; - } else { - word_ofs = 3; - } - word_grp = SeqMakeWord(work, wordMgTbl[work->state+word_ofs], word_flag); - } - HuSprGrpPosSet(work->spr_grp[word_grp], 0.0f, 0.0f); - - for(i=0; iword_len; i++) { - HuSprTPLvlSet(work->spr_grp[word_grp], i, 1.0f); - HuSprPosSet(work->spr_grp[word_grp], i, -100.0f, HU_DISP_CENTERY); - } - if(seqPauseF) { - work->type = 2; - HuSprAttrSet(word_grp, 0, HUSPR_ATTR_DISPOFF); - } else { - work->param[0] = 3; - } - return 1; + s16 i; + s16 word_grp; + + work->state = va_arg(params, int); + if (work->state == 2) { + return SeqInitDraw(work, params); + } + work->type = 0; + work->angle = 0; + + { + s32 word_katakana; + s32 word_flag; + s32 word_ofs; + word_katakana = 0; + if (work->state == 2 && seqLanguage == 0) { + word_katakana = 1; + } + if (word_katakana) { + word_flag = 1; + } + else { + word_flag = 0; + } + if (seqLanguage == 0) { + word_ofs = 0; + } + else { + word_ofs = 3; + } + word_grp = SeqMakeWord(work, wordMgTbl[work->state + word_ofs], word_flag); + } + HuSprGrpPosSet(work->spr_grp[word_grp], 0.0f, 0.0f); + + for (i = 0; i < work->word_len; i++) { + HuSprTPLvlSet(work->spr_grp[word_grp], i, 1.0f); + HuSprPosSet(work->spr_grp[word_grp], i, -100.0f, HU_DISP_CENTERY); + } + if (seqPauseF) { + work->type = 2; + HuSprAttrSet(word_grp, 0, HUSPR_ATTR_DISPOFF); + } + else { + work->param[0] = 3; + } + return 1; } static s32 SeqUpdateMGBasic(SeqWork *work) { - s16 idx; - float scale; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - if(work->type == 2) { - return 1; - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - float pos_x; - float time; - s16 i; - if(work->state == 0) { - if(work->time <= 40) { - for(i=0; iword_len; i++) { - time = work->time-((20/work->word_len)*(work->word_len-i-1)); - if(time < 0 || time > 20.0f) { - continue; - } - pos_x = (work->x-(0.5f*(work->word_len*56)))+28.0f+(i*56); - if(time == 20.0f) { - HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); - HuSprZRotSet(work->spr_grp[0], i, 0.0f); - } else { - HuSprPosSet(work->spr_grp[0], i, pos_x-(((1.0-sin(((time*4.5f)*M_PI)/180.0))*(work->word_len*56*2))), work->y); - HuSprZRotSet(work->spr_grp[0], i, (time/20.0f)*390.0f); - } - } - } else { - time = work->time-40; - scale = work->scale_x+(0.5*sin(((time*9.0f)*M_PI)/180.0)); - for(i=0; iword_len; i++) { - pos_x = ((28.0f*scale)+(work->x-(0.5f*(scale*(work->word_len*56)))))+(scale*(i*56)); - HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], i, scale, work->scale_y+sin(((time*9.0f)*M_PI)/180.0)); - } - } - if(work->time == 40) { - idx = HuAudFXPlay(36); - work->stat |= 0x10; - } - if(work->time == 60) { - SeqPlayStartFX(); - work->stat |= 0x4; - } - if(work->time >= 60) { - work->type = 0; - } - } else { - if(work->time == 1) { - if(work->state == 1) { - HuAudFXPlay(37); - } else { - HuAudFXPlay(40); - } - MGSeqPauseEnableCtrl(0); - work->stat |= 0x10; - } - if(work->time <= 20) { - time = work->time; - scale = work->scale_x+(0.5*sin(((time*9.0f)*M_PI)/180.0)); - for(i=0; iword_len; i++) { - HuSprAttrReset(work->spr_grp[0], i, HUSPR_ATTR_DISPOFF); - pos_x = ((28.0f*scale)+(work->x-(0.5f*(scale*(work->word_len*56)))))+(scale*(i*56)); - HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], i, work->scale_x+sin(((time*9.0f)*M_PI)/180.0), work->scale_y+sin(((time*9.0f)*M_PI)/180.0)); - } - if(time == 20.0f) { - for(i=0; iword_len; i++) { - HuSprAttrReset(work->spr_grp[0], i, HUSPR_ATTR_DISPOFF); - } - } - } else { - if(work->time > 80) { - for(i=0; iword_len; i++) { - time = (work->time-80)-((20/work->word_len)*(work->word_len-i-1)); - if(time < 0.0f || time > 20.0f) { - continue; - } - pos_x = (28.0f+(work->x-(0.5f*(work->word_len*56))))+(i*56); - if(time == 20.0f) { - HuSprAttrSet(work->spr_grp[0], i, HUSPR_ATTR_DISPOFF); - } else { - HuSprPosSet(work->spr_grp[0], i, pos_x+((1.0-cos(((time*4.5f)*M_PI)/180.0f))*(work->word_len*56*2)), work->y); - HuSprZRotSet(work->spr_grp[0], i, (time/20.0f)*390.0f); - } - } - } - } - if(work->time == 110) { - work->stat |= 0x4; - } - if(work->time >= 110) { - work->type = 0; - work->stat |= 8; - } - } - } - break; - - case -1: - { - work->angle += seqSpeed*0.1f; - scale = 1.0f-work->angle; - if(scale <= 0.0f) { - scale = 0.0f; - work->type = 0; - work->stat |= 0x8; - if(work->state == 0) { - MGSeqPauseEnableCtrl(1); - } - } - for(idx=0; idxword_len; idx++) { - HuSprTPLvlSet(work->spr_grp[0], idx, scale); - } - } - break; - - default: - break; - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s16 idx; + float scale; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + if (work->type == 2) { + return 1; + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + float pos_x; + float time; + s16 i; + if (work->state == 0) { + if (work->time <= 40) { + for (i = 0; i < work->word_len; i++) { + time = work->time - ((20 / work->word_len) * (work->word_len - i - 1)); + if (time < 0 || time > 20.0f) { + continue; + } + pos_x = (work->x - (0.5f * (work->word_len * 56))) + 28.0f + (i * 56); + if (time == 20.0f) { + HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); + HuSprZRotSet(work->spr_grp[0], i, 0.0f); + } + else { + HuSprPosSet(work->spr_grp[0], i, pos_x - (((1.0 - sin(((time * 4.5f) * M_PI) / 180.0)) * (work->word_len * 56 * 2))), + work->y); + HuSprZRotSet(work->spr_grp[0], i, (time / 20.0f) * 390.0f); + } + } + } + else { + time = work->time - 40; + scale = work->scale_x + (0.5 * sin(((time * 9.0f) * M_PI) / 180.0)); + for (i = 0; i < work->word_len; i++) { + pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (i * 56)); + HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], i, scale, work->scale_y + sin(((time * 9.0f) * M_PI) / 180.0)); + } + } + if (work->time == 40) { + idx = HuAudFXPlay(36); + work->stat |= 0x10; + } + if (work->time == 60) { + SeqPlayStartFX(); + work->stat |= 0x4; + } + if (work->time >= 60) { + work->type = 0; + } + } + else { + if (work->time == 1) { + if (work->state == 1) { + HuAudFXPlay(37); + } + else { + HuAudFXPlay(40); + } + MGSeqPauseEnableCtrl(0); + work->stat |= 0x10; + } + if (work->time <= 20) { + time = work->time; + scale = work->scale_x + (0.5 * sin(((time * 9.0f) * M_PI) / 180.0)); + for (i = 0; i < work->word_len; i++) { + HuSprAttrReset(work->spr_grp[0], i, HUSPR_ATTR_DISPOFF); + pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (i * 56)); + HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], i, work->scale_x + sin(((time * 9.0f) * M_PI) / 180.0), + work->scale_y + sin(((time * 9.0f) * M_PI) / 180.0)); + } + if (time == 20.0f) { + for (i = 0; i < work->word_len; i++) { + HuSprAttrReset(work->spr_grp[0], i, HUSPR_ATTR_DISPOFF); + } + } + } + else { + if (work->time > 80) { + for (i = 0; i < work->word_len; i++) { + time = (work->time - 80) - ((20 / work->word_len) * (work->word_len - i - 1)); + if (time < 0.0f || time > 20.0f) { + continue; + } + pos_x = (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + (i * 56); + if (time == 20.0f) { + HuSprAttrSet(work->spr_grp[0], i, HUSPR_ATTR_DISPOFF); + } + else { + HuSprPosSet(work->spr_grp[0], i, + pos_x + ((1.0 - cos(((time * 4.5f) * M_PI) / 180.0f)) * (work->word_len * 56 * 2)), work->y); + HuSprZRotSet(work->spr_grp[0], i, (time / 20.0f) * 390.0f); + } + } + } + } + if (work->time == 110) { + work->stat |= 0x4; + } + if (work->time >= 110) { + work->type = 0; + work->stat |= 8; + } + } + } break; + + case -1: { + work->angle += seqSpeed * 0.1f; + scale = 1.0f - work->angle; + if (scale <= 0.0f) { + scale = 0.0f; + work->type = 0; + work->stat |= 0x8; + if (work->state == 0) { + MGSeqPauseEnableCtrl(1); + } + } + for (idx = 0; idx < work->word_len; idx++) { + HuSprTPLvlSet(work->spr_grp[0], idx, scale); + } + } break; + + default: + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } static s32 SeqInitMGCommon(SeqWork *work, va_list params) { - s16 i; - float tp_lvl; - s16 j; - s16 word_grp; - - work->state = va_arg(params, int); - if(work->state == 2) { - return SeqInitDraw(work, params); - } - work->type = 0; - work->angle = 0; - tp_lvl = 1.0f; - for(i=0; i<4; i++) { - if(i == 0) - { - s32 word_katakana; - s32 word_flag; - s32 word_ofs; - word_katakana = 0; - if(work->state == 2 && seqLanguage == 0) { - word_katakana = 1; - } - if(word_katakana) { - word_flag = 1; - } else { - word_flag = 0; - } - if(seqLanguage == 0) { - word_ofs = 0; - } else { - word_ofs = 3; - } - word_grp = SeqMakeWord(work, wordMgTbl[work->state+word_ofs], word_flag); - } else { - s16 grp_idx; - s32 new_grp; - for(grp_idx=0; grp_idx<16; grp_idx++) { - if(work->spr_grp[grp_idx] == -1) { - break; - } - } - if(grp_idx == 16) { - new_grp = -1; - } else { - work->spr_grp[grp_idx] = HuSprGrpCopy(work->spr_grp[word_grp]); - new_grp = grp_idx; - } - (void)new_grp; - word_grp = new_grp; - } - HuSprGrpPosSet(work->spr_grp[word_grp], 0.0f, 0.0f); - for(j=0; jword_len; j++) { - HuSprTPLvlSet(work->spr_grp[word_grp], j, tp_lvl); - HuSprPosSet(work->spr_grp[word_grp], j, -100.0f, HU_DISP_CENTERY); - HuSprPriSet(work->spr_grp[word_grp], j, i+5); - HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); - } - if(i == 0) { - tp_lvl -= 0.5; - } else { - tp_lvl -= 0.1f; - } - } - if(seqPauseF) { - work->type = 2; - HuSprAttrSet(word_grp, 0, HUSPR_ATTR_DISPOFF); - } else { - work->param[0] = 3; - } - return 1; + s16 i; + float tp_lvl; + s16 j; + s16 word_grp; + + work->state = va_arg(params, int); + if (work->state == 2) { + return SeqInitDraw(work, params); + } + work->type = 0; + work->angle = 0; + tp_lvl = 1.0f; + for (i = 0; i < 4; i++) { + if (i == 0) { + s32 word_katakana; + s32 word_flag; + s32 word_ofs; + word_katakana = 0; + if (work->state == 2 && seqLanguage == 0) { + word_katakana = 1; + } + if (word_katakana) { + word_flag = 1; + } + else { + word_flag = 0; + } + if (seqLanguage == 0) { + word_ofs = 0; + } + else { + word_ofs = 3; + } + word_grp = SeqMakeWord(work, wordMgTbl[work->state + word_ofs], word_flag); + } + else { + s16 grp_idx; + s32 new_grp; + for (grp_idx = 0; grp_idx < 16; grp_idx++) { + if (work->spr_grp[grp_idx] == -1) { + break; + } + } + if (grp_idx == 16) { + new_grp = -1; + } + else { + work->spr_grp[grp_idx] = HuSprGrpCopy(work->spr_grp[word_grp]); + new_grp = grp_idx; + } + (void)new_grp; + word_grp = new_grp; + } + HuSprGrpPosSet(work->spr_grp[word_grp], 0.0f, 0.0f); + for (j = 0; j < work->word_len; j++) { + HuSprTPLvlSet(work->spr_grp[word_grp], j, tp_lvl); + HuSprPosSet(work->spr_grp[word_grp], j, -100.0f, HU_DISP_CENTERY); + HuSprPriSet(work->spr_grp[word_grp], j, i + 5); + HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); + } + if (i == 0) { + tp_lvl -= 0.5; + } + else { + tp_lvl -= 0.1f; + } + } + if (seqPauseF) { + work->type = 2; + HuSprAttrSet(word_grp, 0, HUSPR_ATTR_DISPOFF); + } + else { + work->param[0] = 3; + } + return 1; } static s32 SeqUpdateMGBattle(SeqWork *work) { - s16 idx; - float scale; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - if(work->type == 2) { - return 1; - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->stat |= 0x4; - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - s16 i, j; - float time; - float pos_x; - if(work->state == 0) { - if(work->time < 45) { - if(work->time > 10 && work->time <= 40) { - time = work->time-10; - scale = 10.0f*(1.0f-(time/30.0f)); - pos_x = (work->x-(0.5f*(work->word_len*56)))+28.0f; - HuSprPosSet(work->spr_grp[0], 0, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], 0, work->scale_x+scale, work->scale_y+scale); - scale = time/30.0f; - HuSprTPLvlSet(work->spr_grp[0], 0, scale); - } - for(i=0; i<4; i++) { - time = work->time-i; - if(time < 0 || time > 40) { - continue; - } - for(j=1; jword_len; j++) { - pos_x = (28.0f+(work->x-(0.5f*(work->word_len*56))))+(j*56); - if(time == 40.0f) { - HuSprPosSet(work->spr_grp[i], j, pos_x, work->y); - HuSprZRotSet(work->spr_grp[i], j, 0.0f); - HuSprScaleSet(work->spr_grp[i], j, work->scale_x, work->scale_y); - if(i != 0) { - HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); - } - } else { - s16 discard_cnt; - static float letterOfs[] = { - 30, 20, - 20, 3, - -4, 20, - -30, 20, - 20, 20, - -30, 20, - -10, 40, - 10, -40 - }; - float x, y; - float ofs_x, ofs_y; - float zrot, scale_ang; - x = pos_x; - y = work->y; - ofs_x = letterOfs[((j-1)&0x7)*2]; - ofs_y = letterOfs[(((j-1)&0x7)*2)+1]; - zrot = 0.0f; - discard_cnt = 0; - scale_ang = 0.0f; - for(idx=0; idx<40.0f-time; idx++) { - if(x+ofs_x > HU_DISP_WIDTH || x+ofs_x < 0) { - ofs_x = -ofs_x; - discard_cnt++; - } - if(y+ofs_y > HU_DISP_HEIGHT || y+ofs_y < 0) { - ofs_y = -ofs_y; - discard_cnt++; - } - if(discard_cnt) { - zrot += 20.0f; - scale_ang = 0.0f; - } - x += ofs_x; - y += ofs_y; - } - HuSprPosSet(work->spr_grp[i], j, x, y); - HuSprScaleSet(work->spr_grp[i], j, work->scale_x*cos((M_PI*scale_ang)/180.0), work->scale_y); - HuSprZRotSet(work->spr_grp[i], j, zrot); - } - } - } - } else { - if(work->time > 60) { - time = work->time-60; - scale = 0.5*sin((M_PI*(time*9.0f))/180.0); - for(j=0; jword_len; j++) { - pos_x = (28.0f*(scale+work->scale_x))+(work->x-(0.5f*((work->word_len*56)*(scale+work->scale_x))))+((j*56)*(scale+work->scale_x)); - HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x+scale, work->scale_y+scale); - } - } - } - if(work->time == 60) { - HuAudFXPlay(36); - work->stat |= 0x10; - } - if(work->time == 80) { - work->stat |= 0x4; - SeqPlayStartFX(); - } - if(work->time >= 80) { - work->type = 0; - } - } else { - if(work->time == 1) { - if(work->state == 1) { - HuAudFXPlay(37); - } else { - HuAudFXPlay(40); - } - MGSeqPauseEnableCtrl(0); - work->stat |= 0x10; - } - if(work->time <= 20) { - for(i=1; i<4; i++) { - for(j=0; jword_len; j++) { - HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); - } - } - time = work->time; - scale = work->scale_x+(0.5*sin((M_PI*(time*9.0f))/180.0)); - for(j=0; jword_len; j++) { - HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); - pos_x = ((28.0f*scale)+(work->x-(0.5f*(scale*(work->word_len*56)))))+(scale*(j*56)); - HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x+(sin((M_PI*(time*9.0f))/180.0)), work->scale_y+(sin((M_PI*(time*9.0f))/180.0))); - } - if(time == 20.0f) { - for(j=0; jword_len; j++) { - HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); - } - } - } else { - if(work->time > 80 && work->time <= 95) { - time = work->time-80; - for(j=0; jword_len; j++) { - pos_x = (28.0f+(work->x-(0.5f*(work->word_len*56))))+(j*56); - HuSprPosSet(work->spr_grp[0], j, pos_x+((HU_DISP_CENTERX-pos_x)*(1.0-cos((M_PI*(time*6.0))/180.0))), work->y); - } - if(time == 15.0f) { - for(j=0; jword_len; j++) { - HuSprAttrReset(work->spr_grp[1], j, HUSPR_ATTR_DISPOFF); - HuSprPosSet(work->spr_grp[1], j, HU_DISP_CENTERX, work->y); - HuSprTPLvlSet(work->spr_grp[1], j, 1.0f); - } - } - } else { - if(work->time > 105) { - for(j=0; jword_len; j++) { - time = work->time-105; - time -= j*3; - if(time < 0) { - continue; - } - scale = 1.0f-(time/15.0f); - if(scale < 0.0f) { - scale = 0.0f; - } - HuSprPosSet(work->spr_grp[0], j, HU_DISP_CENTERX, work->y+((-100.0f-work->y)*(time/20.0f))); - HuSprTPLvlSet(work->spr_grp[0], j, scale); - HuSprPosSet(work->spr_grp[1], j, HU_DISP_CENTERX, work->y+((580.0f-work->y)*(time/20.0f))); - HuSprTPLvlSet(work->spr_grp[1], j, scale); - } - } - } - } - if(work->time == 130) { - work->stat |= 0x4; - } - if(work->time >= 130) { - work->type = 0; - work->stat |= 0x8; - } - } - - } - break; - - case -1: - { - work->angle += seqSpeed*0.1f; - scale = 1.0f-work->angle; - if(scale <= 0.0f) { - scale = 0.0f; - work->type = 0; - work->stat |= 0x8; - if(work->state == 0) { - MGSeqPauseEnableCtrl(1); - } - } - for(idx=0; idxword_len; idx++) { - HuSprTPLvlSet(work->spr_grp[0], idx, scale); - } - } - break; - - default: - break; - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s16 idx; + float scale; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + if (work->type == 2) { + return 1; + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->stat |= 0x4; + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + s16 i, j; + float time; + float pos_x; + if (work->state == 0) { + if (work->time < 45) { + if (work->time > 10 && work->time <= 40) { + time = work->time - 10; + scale = 10.0f * (1.0f - (time / 30.0f)); + pos_x = (work->x - (0.5f * (work->word_len * 56))) + 28.0f; + HuSprPosSet(work->spr_grp[0], 0, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], 0, work->scale_x + scale, work->scale_y + scale); + scale = time / 30.0f; + HuSprTPLvlSet(work->spr_grp[0], 0, scale); + } + for (i = 0; i < 4; i++) { + time = work->time - i; + if (time < 0 || time > 40) { + continue; + } + for (j = 1; j < work->word_len; j++) { + pos_x = (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + (j * 56); + if (time == 40.0f) { + HuSprPosSet(work->spr_grp[i], j, pos_x, work->y); + HuSprZRotSet(work->spr_grp[i], j, 0.0f); + HuSprScaleSet(work->spr_grp[i], j, work->scale_x, work->scale_y); + if (i != 0) { + HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); + } + } + else { + s16 discard_cnt; + static float letterOfs[] = { 30, 20, 20, 3, -4, 20, -30, 20, 20, 20, -30, 20, -10, 40, 10, -40 }; + float x, y; + float ofs_x, ofs_y; + float zrot, scale_ang; + x = pos_x; + y = work->y; + ofs_x = letterOfs[((j - 1) & 0x7) * 2]; + ofs_y = letterOfs[(((j - 1) & 0x7) * 2) + 1]; + zrot = 0.0f; + discard_cnt = 0; + scale_ang = 0.0f; + for (idx = 0; idx < 40.0f - time; idx++) { + if (x + ofs_x > HU_DISP_WIDTH || x + ofs_x < 0) { + ofs_x = -ofs_x; + discard_cnt++; + } + if (y + ofs_y > HU_DISP_HEIGHT || y + ofs_y < 0) { + ofs_y = -ofs_y; + discard_cnt++; + } + if (discard_cnt) { + zrot += 20.0f; + scale_ang = 0.0f; + } + x += ofs_x; + y += ofs_y; + } + HuSprPosSet(work->spr_grp[i], j, x, y); + HuSprScaleSet(work->spr_grp[i], j, work->scale_x * cos((M_PI * scale_ang) / 180.0), work->scale_y); + HuSprZRotSet(work->spr_grp[i], j, zrot); + } + } + } + } + else { + if (work->time > 60) { + time = work->time - 60; + scale = 0.5 * sin((M_PI * (time * 9.0f)) / 180.0); + for (j = 0; j < work->word_len; j++) { + pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + + ((j * 56) * (scale + work->scale_x)); + HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + scale, work->scale_y + scale); + } + } + } + if (work->time == 60) { + HuAudFXPlay(36); + work->stat |= 0x10; + } + if (work->time == 80) { + work->stat |= 0x4; + SeqPlayStartFX(); + } + if (work->time >= 80) { + work->type = 0; + } + } + else { + if (work->time == 1) { + if (work->state == 1) { + HuAudFXPlay(37); + } + else { + HuAudFXPlay(40); + } + MGSeqPauseEnableCtrl(0); + work->stat |= 0x10; + } + if (work->time <= 20) { + for (i = 1; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); + } + } + time = work->time; + scale = work->scale_x + (0.5 * sin((M_PI * (time * 9.0f)) / 180.0)); + for (j = 0; j < work->word_len; j++) { + HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); + pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (j * 56)); + HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + (sin((M_PI * (time * 9.0f)) / 180.0)), + work->scale_y + (sin((M_PI * (time * 9.0f)) / 180.0))); + } + if (time == 20.0f) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); + } + } + } + else { + if (work->time > 80 && work->time <= 95) { + time = work->time - 80; + for (j = 0; j < work->word_len; j++) { + pos_x = (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + (j * 56); + HuSprPosSet( + work->spr_grp[0], j, pos_x + ((HU_DISP_CENTERX - pos_x) * (1.0 - cos((M_PI * (time * 6.0)) / 180.0))), work->y); + } + if (time == 15.0f) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrReset(work->spr_grp[1], j, HUSPR_ATTR_DISPOFF); + HuSprPosSet(work->spr_grp[1], j, HU_DISP_CENTERX, work->y); + HuSprTPLvlSet(work->spr_grp[1], j, 1.0f); + } + } + } + else { + if (work->time > 105) { + for (j = 0; j < work->word_len; j++) { + time = work->time - 105; + time -= j * 3; + if (time < 0) { + continue; + } + scale = 1.0f - (time / 15.0f); + if (scale < 0.0f) { + scale = 0.0f; + } + HuSprPosSet(work->spr_grp[0], j, HU_DISP_CENTERX, work->y + ((-100.0f - work->y) * (time / 20.0f))); + HuSprTPLvlSet(work->spr_grp[0], j, scale); + HuSprPosSet(work->spr_grp[1], j, HU_DISP_CENTERX, work->y + ((580.0f - work->y) * (time / 20.0f))); + HuSprTPLvlSet(work->spr_grp[1], j, scale); + } + } + } + } + if (work->time == 130) { + work->stat |= 0x4; + } + if (work->time >= 130) { + work->type = 0; + work->stat |= 0x8; + } + } + + } break; + + case -1: { + work->angle += seqSpeed * 0.1f; + scale = 1.0f - work->angle; + if (scale <= 0.0f) { + scale = 0.0f; + work->type = 0; + work->stat |= 0x8; + if (work->state == 0) { + MGSeqPauseEnableCtrl(1); + } + } + for (idx = 0; idx < work->word_len; idx++) { + HuSprTPLvlSet(work->spr_grp[0], idx, scale); + } + } break; + + default: + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } static s32 SeqUpdateMG1vs3(SeqWork *work) { - s16 idx; - float scale; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - if(work->type == 2) { - return 1; - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->stat |= 0x4; - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - float time; - float scale_x, scale_y; - float pos_x, pos_y; - s16 i; - s16 j; - if(work->state == 0) { - if(work->time <= 10) { - scale = work->time/10.0f; - time = work->time; - for(idx=0; idxword_len; idx++) { - scale_x = 0.3*work->scale_x; - scale_y = 0.3*work->scale_y; - pos_x = ((28.0f*scale_x)+(work->x-(0.5f*(scale_x*(work->word_len*56)))))+(scale_x*(idx*56)); - pos_y = work->y-(150.0*sin((M_PI*(((16.0f/3.0f)*time)+20.0f))/180.0)); - HuSprPosSet(work->spr_grp[0], idx, pos_x, pos_y); - HuSprScaleSet(work->spr_grp[0], idx, scale_x, scale_y*cos(M_PI*(12.0f*time)/180.0)); - HuSprTPLvlSet(work->spr_grp[0], idx, scale); - } - } else { - if(work->time <= 60) { - for(i=0; i<4; i++) { - for(idx=0; idxword_len; idx++) { - time = (work->time-10)-(idx*3)-i; - if(time < 0.0f) { - time = 0.0f; - } else { - if(time > 30.0f) { - continue; - } - } - scale = 0.3+(0.7*(1.0-cos((M_PI*(time*3.0f))/180.0))); - scale_x = work->scale_x*scale; - scale_y = work->scale_y*scale; - pos_x = ((28.0f*scale_x)+(work->x-(0.5f*(scale_x*(work->word_len*56)))))+(scale_x*(idx*56)); - pos_y = work->y-(150.0*sin((M_PI*(((16.0f/3.0f)*time)+20.0f))/180.0)); - HuSprPosSet(work->spr_grp[i], idx, pos_x, pos_y); - HuSprScaleSet(work->spr_grp[i], idx, scale_x, scale_y*cos(M_PI*(12.0f*time)/180.0)); - } - } - if(work->time == 60) { - for(i=1; i<4; i++) { - for(j=0; jword_len; j++) { - HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); - } - } - } - } else { - if(work->time > 70) { - time = work->time-70; - scale = 0.5*sin((M_PI*(time*9.0f))/180.0); - for(j=0; jword_len; j++) { - pos_x = (28.0f*(scale+work->scale_x))+(work->x-(0.5f*((work->word_len*56)*(scale+work->scale_x))))+((j*56)*(scale+work->scale_x)); - HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x+scale, work->scale_y+scale); - } - } - } - } - if(work->time == 70) { - HuAudFXPlay(36); - work->stat |= 0x10; - } - if(work->time == 90) { - work->stat |= 0x4; - SeqPlayStartFX(); - } - if(work->time >= 90) { - work->type = 0; - } - } else { - if(work->time == 1) { - if(work->state == 1) { - HuAudFXPlay(37); - } else { - HuAudFXPlay(40); - } - MGSeqPauseEnableCtrl(0); - work->stat |= 0x10; - } - if(work->time <= 20) { - for(i=1; i<4; i++) { - for(j=0; jword_len; j++) { - HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); - } - } - time = work->time; - scale = work->scale_x+(0.5*sin((M_PI*(time*9.0f))/180.0)); - for(j=0; jword_len; j++) { - HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); - pos_x = ((28.0f*scale)+(work->x-(0.5f*(scale*(work->word_len*56)))))+(scale*(j*56)); - HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x+(sin((M_PI*(time*9.0f))/180.0)), work->scale_y+(sin((M_PI*(time*9.0f))/180.0))); - } - if(time == 20.0f) { - for(i=1; i<4; i++) { - for(j=0; jword_len; j++) { - HuSprAttrReset(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); - } - } - } - } else { - if(work->time > 80 || work->time < 140) { - for(i=0; i<4; i++) { - for(j=0; jword_len; j++) { - time = (work->time-80)-i-j; - if(time < 0 || time > 40) { - continue; - } - if(time <= 20) { - float pos_base = (28.0f+(work->x-(0.5f*(work->word_len*56))))+(j*56); - pos_x = (28.0f+(work->x-(0.5f*(work->word_len*56))))+((work->word_len-j-1)*56); - HuSprPosSet(work->spr_grp[i], j, pos_base+((time/20.0f)*(pos_x-pos_base)), work->y+(((HU_DISP_HEIGHT-40)-work->y)*(time/20.0f))); - } else { - time -= 20.0f; - pos_x = (28.0f+(work->x-(0.5f*(work->word_len*56))))+((work->word_len-j-1)*56); - pos_y = HU_DISP_HEIGHT-40; - HuSprPosSet(work->spr_grp[i], j, pos_x, pos_y+((-40.0f-pos_y)*(time/20.0f))); - } - } - } - } - } - if(work->time == 140) { - work->stat |= 0x4; - } - if(work->time >= 140) { - work->type = 0; - work->stat |= 0x8; - } - } - } - break; - - case -1: - { - work->angle += seqSpeed*0.1f; - scale = 1.0f-work->angle; - if(scale <= 0.0f) { - scale = 0.0f; - work->type = 0; - work->stat |= 0x8; - if(work->state == 0) { - MGSeqPauseEnableCtrl(1); - } - } - for(idx=0; idxword_len; idx++) { - HuSprTPLvlSet(work->spr_grp[0], idx, scale); - } - } - break; - - default: - break; - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s16 idx; + float scale; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + if (work->type == 2) { + return 1; + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->stat |= 0x4; + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + float time; + float scale_x, scale_y; + float pos_x, pos_y; + s16 i; + s16 j; + if (work->state == 0) { + if (work->time <= 10) { + scale = work->time / 10.0f; + time = work->time; + for (idx = 0; idx < work->word_len; idx++) { + scale_x = 0.3 * work->scale_x; + scale_y = 0.3 * work->scale_y; + pos_x = ((28.0f * scale_x) + (work->x - (0.5f * (scale_x * (work->word_len * 56))))) + (scale_x * (idx * 56)); + pos_y = work->y - (150.0 * sin((M_PI * (((16.0f / 3.0f) * time) + 20.0f)) / 180.0)); + HuSprPosSet(work->spr_grp[0], idx, pos_x, pos_y); + HuSprScaleSet(work->spr_grp[0], idx, scale_x, scale_y * cos(M_PI * (12.0f * time) / 180.0)); + HuSprTPLvlSet(work->spr_grp[0], idx, scale); + } + } + else { + if (work->time <= 60) { + for (i = 0; i < 4; i++) { + for (idx = 0; idx < work->word_len; idx++) { + time = (work->time - 10) - (idx * 3) - i; + if (time < 0.0f) { + time = 0.0f; + } + else { + if (time > 30.0f) { + continue; + } + } + scale = 0.3 + (0.7 * (1.0 - cos((M_PI * (time * 3.0f)) / 180.0))); + scale_x = work->scale_x * scale; + scale_y = work->scale_y * scale; + pos_x = ((28.0f * scale_x) + (work->x - (0.5f * (scale_x * (work->word_len * 56))))) + (scale_x * (idx * 56)); + pos_y = work->y - (150.0 * sin((M_PI * (((16.0f / 3.0f) * time) + 20.0f)) / 180.0)); + HuSprPosSet(work->spr_grp[i], idx, pos_x, pos_y); + HuSprScaleSet(work->spr_grp[i], idx, scale_x, scale_y * cos(M_PI * (12.0f * time) / 180.0)); + } + } + if (work->time == 60) { + for (i = 1; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); + } + } + } + } + else { + if (work->time > 70) { + time = work->time - 70; + scale = 0.5 * sin((M_PI * (time * 9.0f)) / 180.0); + for (j = 0; j < work->word_len; j++) { + pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + + ((j * 56) * (scale + work->scale_x)); + HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + scale, work->scale_y + scale); + } + } + } + } + if (work->time == 70) { + HuAudFXPlay(36); + work->stat |= 0x10; + } + if (work->time == 90) { + work->stat |= 0x4; + SeqPlayStartFX(); + } + if (work->time >= 90) { + work->type = 0; + } + } + else { + if (work->time == 1) { + if (work->state == 1) { + HuAudFXPlay(37); + } + else { + HuAudFXPlay(40); + } + MGSeqPauseEnableCtrl(0); + work->stat |= 0x10; + } + if (work->time <= 20) { + for (i = 1; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); + } + } + time = work->time; + scale = work->scale_x + (0.5 * sin((M_PI * (time * 9.0f)) / 180.0)); + for (j = 0; j < work->word_len; j++) { + HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); + pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (j * 56)); + HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + (sin((M_PI * (time * 9.0f)) / 180.0)), + work->scale_y + (sin((M_PI * (time * 9.0f)) / 180.0))); + } + if (time == 20.0f) { + for (i = 1; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrReset(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); + } + } + } + } + else { + if (work->time > 80 || work->time < 140) { + for (i = 0; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + time = (work->time - 80) - i - j; + if (time < 0 || time > 40) { + continue; + } + if (time <= 20) { + float pos_base = (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + (j * 56); + pos_x = (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + ((work->word_len - j - 1) * 56); + HuSprPosSet(work->spr_grp[i], j, pos_base + ((time / 20.0f) * (pos_x - pos_base)), + work->y + (((HU_DISP_HEIGHT - 40) - work->y) * (time / 20.0f))); + } + else { + time -= 20.0f; + pos_x = (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + ((work->word_len - j - 1) * 56); + pos_y = HU_DISP_HEIGHT - 40; + HuSprPosSet(work->spr_grp[i], j, pos_x, pos_y + ((-40.0f - pos_y) * (time / 20.0f))); + } + } + } + } + } + if (work->time == 140) { + work->stat |= 0x4; + } + if (work->time >= 140) { + work->type = 0; + work->stat |= 0x8; + } + } + } break; + + case -1: { + work->angle += seqSpeed * 0.1f; + scale = 1.0f - work->angle; + if (scale <= 0.0f) { + scale = 0.0f; + work->type = 0; + work->stat |= 0x8; + if (work->state == 0) { + MGSeqPauseEnableCtrl(1); + } + } + for (idx = 0; idx < work->word_len; idx++) { + HuSprTPLvlSet(work->spr_grp[0], idx, scale); + } + } break; + + default: + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } static s32 SeqUpdateMGStory(SeqWork *work) { - s16 idx; - float scale; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - if(work->type == 2) { - return 1; - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->stat |= 0x4; - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - float pos_x, pos_y; - float time; - s16 i; - s16 j; - if(work->state == 0) { - if(work->time <= 30) { - for(idx=0; idxword_len; idx++) { - time = (work->time-(idx*2)); - if(time < 0.0f || time > 15.0f) { - continue; - } - pos_x = -50.0f; - HuSprPosSet(work->spr_grp[0], idx, pos_x+((HU_DISP_CENTERX-pos_x)*(time/15.0f)), work->y); - HuSprTPLvlSet(work->spr_grp[0], idx, 1.0f); - HuSprZRotSet(work->spr_grp[0], idx, (1.0-(time/15.0f))*180.0); - pos_x = HU_DISP_WIDTH+50; - HuSprPosSet(work->spr_grp[1], idx, pos_x+((HU_DISP_CENTERX-pos_x)*(time/15.0f)), work->y); - HuSprTPLvlSet(work->spr_grp[1], idx, 1.0f); - HuSprZRotSet(work->spr_grp[1], idx, (1.0-(time/15.0f))*-180.0); - } - if(work->time == 30) { - for(j=0; jword_len; j++) { - HuSprAttrSet(work->spr_grp[1], j, HUSPR_ATTR_DISPOFF); - } - } - } else { - if(work->time > 35 && work->time <= 45) { - time = work->time-35; - for(idx=0; idxword_len; idx++) { - pos_x = (work->x-(0.5f*(work->word_len*56)))+28.0f+(idx*56); - HuSprPosSet(work->spr_grp[0], idx, HU_DISP_CENTERX+((pos_x-HU_DISP_CENTERX)*(time/10.0f)), work->y); - } - } else { - if(work->time > 55) { - time = work->time-55; - scale = 0.5*sin(M_PI*(9.0f*time)/180.0); - for(j=0; jword_len; j++) { - pos_x = (28.0f*(scale+work->scale_x))+(work->x-(0.5f*((work->word_len*56)*(scale+work->scale_x))))+((j*56)*(scale+work->scale_x)); - HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x+scale, work->scale_y+scale); - } - } - } - } - if(work->time == 55) { - HuAudFXPlay(36); - work->stat |= 0x10; - } - if(work->time == 75) { - SeqPlayStartFX(); - work->stat |= 0x4; - } - if(work->time >= 75) { - work->type = 0; - } - } else { - if(work->time == 1) { - if(work->state == 1) { - HuAudFXPlay(37); - } else { - HuAudFXPlay(40); - } - MGSeqPauseEnableCtrl(0); - work->stat |= 0x10; - } - if(work->time <= 20) { - for(i=1; i<4; i++) { - for(j=0; jword_len; j++) { - HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); - } - } - time = work->time; - scale = work->scale_x+(0.5*sin((M_PI*(time*9.0f))/180.0)); - for(j=0; jword_len; j++) { - HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); - pos_x = ((28.0f*scale)+(work->x-(0.5f*(scale*(work->word_len*56)))))+(scale*(j*56)); - HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x+(sin((M_PI*(time*9.0f))/180.0)), work->scale_y+(sin((M_PI*(time*9.0f))/180.0))); - } - if(time == 20.0f){ - for(i=1; i<4; i++) { - for(j=0; jword_len; j++) { - HuSprAttrReset(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); - } - } - } - } else if(work->time > 80 && work->time < 160) { - for(i=0; i<4; i++) { - for(j=0; jword_len; j++) { - s16 initF; - float dx, dy; - time = (work->time-80)-i; - if(time < 0 || time > 60) { - continue; - } - pos_x = (28.0f+(work->x-(0.5f*(work->word_len*56))))+(j*56); - dx = 28.0f+(work->x-(0.5f*(work->word_len*56))); - pos_y = work->y; - for(idx=initF=0; idxx-(0.5f*(work->word_len*56))); - initF = 1; - dy = 25.0f; - dx = 10.0f; - } - - } else { - pos_x += dx; - pos_y += dy; - dx += 0.1; - dy -= 2.0f; - if(pos_y < 0.0f) { - break; - } - } - } - - HuSprPosSet(work->spr_grp[i], j, pos_x, pos_y); - } - } - } - if(work->time == 160) { - work->stat |= 0x4; - } - if(work->time >= 160) { - work->type = 0; - work->stat |= 0x8; - } - } - } - break; - - case -1: - { - work->angle += seqSpeed*0.1f; - scale = 1.0f-work->angle; - if(scale <= 0.0f) { - scale = 0.0f; - work->type = 0; - work->stat |= 0x8; - if(work->state == 0) { - MGSeqPauseEnableCtrl(1); - } - } - for(idx=0; idxword_len; idx++) { - HuSprTPLvlSet(work->spr_grp[0], idx, scale); - } - } - break; - - default: - break; - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s16 idx; + float scale; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + if (work->type == 2) { + return 1; + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->stat |= 0x4; + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + float pos_x, pos_y; + float time; + s16 i; + s16 j; + if (work->state == 0) { + if (work->time <= 30) { + for (idx = 0; idx < work->word_len; idx++) { + time = (work->time - (idx * 2)); + if (time < 0.0f || time > 15.0f) { + continue; + } + pos_x = -50.0f; + HuSprPosSet(work->spr_grp[0], idx, pos_x + ((HU_DISP_CENTERX - pos_x) * (time / 15.0f)), work->y); + HuSprTPLvlSet(work->spr_grp[0], idx, 1.0f); + HuSprZRotSet(work->spr_grp[0], idx, (1.0 - (time / 15.0f)) * 180.0); + pos_x = HU_DISP_WIDTH + 50; + HuSprPosSet(work->spr_grp[1], idx, pos_x + ((HU_DISP_CENTERX - pos_x) * (time / 15.0f)), work->y); + HuSprTPLvlSet(work->spr_grp[1], idx, 1.0f); + HuSprZRotSet(work->spr_grp[1], idx, (1.0 - (time / 15.0f)) * -180.0); + } + if (work->time == 30) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrSet(work->spr_grp[1], j, HUSPR_ATTR_DISPOFF); + } + } + } + else { + if (work->time > 35 && work->time <= 45) { + time = work->time - 35; + for (idx = 0; idx < work->word_len; idx++) { + pos_x = (work->x - (0.5f * (work->word_len * 56))) + 28.0f + (idx * 56); + HuSprPosSet(work->spr_grp[0], idx, HU_DISP_CENTERX + ((pos_x - HU_DISP_CENTERX) * (time / 10.0f)), work->y); + } + } + else { + if (work->time > 55) { + time = work->time - 55; + scale = 0.5 * sin(M_PI * (9.0f * time) / 180.0); + for (j = 0; j < work->word_len; j++) { + pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + + ((j * 56) * (scale + work->scale_x)); + HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + scale, work->scale_y + scale); + } + } + } + } + if (work->time == 55) { + HuAudFXPlay(36); + work->stat |= 0x10; + } + if (work->time == 75) { + SeqPlayStartFX(); + work->stat |= 0x4; + } + if (work->time >= 75) { + work->type = 0; + } + } + else { + if (work->time == 1) { + if (work->state == 1) { + HuAudFXPlay(37); + } + else { + HuAudFXPlay(40); + } + MGSeqPauseEnableCtrl(0); + work->stat |= 0x10; + } + if (work->time <= 20) { + for (i = 1; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); + } + } + time = work->time; + scale = work->scale_x + (0.5 * sin((M_PI * (time * 9.0f)) / 180.0)); + for (j = 0; j < work->word_len; j++) { + HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); + pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (j * 56)); + HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + (sin((M_PI * (time * 9.0f)) / 180.0)), + work->scale_y + (sin((M_PI * (time * 9.0f)) / 180.0))); + } + if (time == 20.0f) { + for (i = 1; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrReset(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); + } + } + } + } + else if (work->time > 80 && work->time < 160) { + for (i = 0; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + s16 initF; + float dx, dy; + time = (work->time - 80) - i; + if (time < 0 || time > 60) { + continue; + } + pos_x = (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + (j * 56); + dx = 28.0f + (work->x - (0.5f * (work->word_len * 56))); + pos_y = work->y; + for (idx = initF = 0; idx < time; idx++) { + if (!initF) { + pos_x -= 20.0f; + if (pos_x <= dx) { + pos_x = 28.0f + (work->x - (0.5f * (work->word_len * 56))); + initF = 1; + dy = 25.0f; + dx = 10.0f; + } + } + else { + pos_x += dx; + pos_y += dy; + dx += 0.1; + dy -= 2.0f; + if (pos_y < 0.0f) { + break; + } + } + } + + HuSprPosSet(work->spr_grp[i], j, pos_x, pos_y); + } + } + } + if (work->time == 160) { + work->stat |= 0x4; + } + if (work->time >= 160) { + work->type = 0; + work->stat |= 0x8; + } + } + } break; + + case -1: { + work->angle += seqSpeed * 0.1f; + scale = 1.0f - work->angle; + if (scale <= 0.0f) { + scale = 0.0f; + work->type = 0; + work->stat |= 0x8; + if (work->state == 0) { + MGSeqPauseEnableCtrl(1); + } + } + for (idx = 0; idx < work->word_len; idx++) { + HuSprTPLvlSet(work->spr_grp[0], idx, scale); + } + } break; + + default: + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } static s32 SeqUpdateMG2vs2(SeqWork *work) { - s16 idx; - float scale; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - if(work->type == 2) { - return 1; - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->stat |= 0x4; - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - static s16 letterOfs[] = { - -10, -50, - 0, -30, - 5, -60, - -10, 60, - 8, -40, - 5, 50, - -10, 20 - }; - - float pos_x; - float time; - s16 i; - s16 j; - if(work->state == 0) { - if(work->time <= 30) { - time = work->time; - for(idx=0; idxword_len; idx++) { - pos_x = (28.0f+(work->x-(0.5f*(work->scale_x*(work->word_len*56)))))+(idx*56); - HuSprPosSet(work->spr_grp[0], idx, pos_x+((1.0f-(time/30.0f))*letterOfs[(idx*2)]), work->y+((1.0f-(time/30.0f))*letterOfs[(idx*2)+1])); - HuSprTPLvlSet(work->spr_grp[0], idx, time/30.0f); - } - } else { - if(work->time > 40 && work->time <= 60) { - time = work->time-40; - scale = 0.5*sin(((time*9.0f)*M_PI)/180.0); - for(j=0; jword_len; j++) { - pos_x = (28.0f*(scale+work->scale_x))+(work->x-(0.5f*((work->word_len*56)*(scale+work->scale_x))))+((j*56)*(scale+work->scale_x)); - HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x+scale, work->scale_y+scale); - } - } - } - if(work->time == 40) { - HuAudFXPlay(36); - work->stat |= 0x10; - } - if(work->time == 60) { - work->stat |= 0x4; - SeqPlayStartFX(); - } - if(work->time >= 60) { - work->type = 0; - } - } else { - if(work->time == 1) { - if(work->state == 1) { - HuAudFXPlay(37); - } else { - HuAudFXPlay(40); - } - MGSeqPauseEnableCtrl(0); - work->stat |= 0x10; - } - if(work->time <= 20) { - for(i=1; i<4; i++) { - for(j=0; jword_len; j++) { - HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); - } - } - time = work->time; - scale = work->scale_x+(0.5*sin((M_PI*(time*9.0f))/180.0)); - for(j=0; jword_len; j++) { - HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); - pos_x = ((28.0f*scale)+(work->x-(0.5f*(scale*(work->word_len*56)))))+(scale*(j*56)); - HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x+(sin((M_PI*(time*9.0f))/180.0)), work->scale_y+(sin((M_PI*(time*9.0f))/180.0))); - } - if(time == 20.0f) { - for(i=1; i<4; i++) { - for(j=0; jword_len; j++) { - HuSprAttrReset(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); - } - } - } - } else { - if(work->time > 80 && work->time < 140) { - time = work->time-80; - for(idx=0; idxword_len; idx++) { - float radius = (idx*56)-(((work->word_len-1)*56)/2); - float angle = (1.0f+(1.0f-(ABS(radius)/320.0f)))*720.0f; - float new_scale; - radius *= 1.0-(time/60.0f); - HuSprPosSet(work->spr_grp[0], idx, (radius*sin(M_PI*(((time/60.0f)*angle)+90.0f)/180.0))+work->x, (radius*cos(M_PI*(((time/60.0f)*angle)+90.0f)/180.0))+work->y); - HuSprZRotSet(work->spr_grp[0], idx, -(time/60.0f)*720.0f); - new_scale = 0.5+(0.5*(1.0f-(time/60.0f))); - HuSprScaleSet(work->spr_grp[0], idx, new_scale, new_scale); - HuSprTPLvlSet(work->spr_grp[0], idx, 1.0f-(time/60.0f)); - } - } - } - if(work->time == 140) { - work->stat |= 0x4; - } - if(work->time >= 150) { - work->type = 0; - work->stat |= 0x8; - } - } - } - break; - - case -1: - { - work->angle += seqSpeed*0.1f; - scale = 1.0f-work->angle; - if(scale <= 0.0f) { - scale = 0.0f; - work->type = 0; - work->stat |= 0x8; - if(work->state == 0) { - MGSeqPauseEnableCtrl(1); - } - } - for(idx=0; idxword_len; idx++) { - HuSprTPLvlSet(work->spr_grp[0], idx, scale); - } - } - break; - - default: - - break; - - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s16 idx; + float scale; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + if (work->type == 2) { + return 1; + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->stat |= 0x4; + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + static s16 letterOfs[] = { -10, -50, 0, -30, 5, -60, -10, 60, 8, -40, 5, 50, -10, 20 }; + + float pos_x; + float time; + s16 i; + s16 j; + if (work->state == 0) { + if (work->time <= 30) { + time = work->time; + for (idx = 0; idx < work->word_len; idx++) { + pos_x = (28.0f + (work->x - (0.5f * (work->scale_x * (work->word_len * 56))))) + (idx * 56); + HuSprPosSet(work->spr_grp[0], idx, pos_x + ((1.0f - (time / 30.0f)) * letterOfs[(idx * 2)]), + work->y + ((1.0f - (time / 30.0f)) * letterOfs[(idx * 2) + 1])); + HuSprTPLvlSet(work->spr_grp[0], idx, time / 30.0f); + } + } + else { + if (work->time > 40 && work->time <= 60) { + time = work->time - 40; + scale = 0.5 * sin(((time * 9.0f) * M_PI) / 180.0); + for (j = 0; j < work->word_len; j++) { + pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + + ((j * 56) * (scale + work->scale_x)); + HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + scale, work->scale_y + scale); + } + } + } + if (work->time == 40) { + HuAudFXPlay(36); + work->stat |= 0x10; + } + if (work->time == 60) { + work->stat |= 0x4; + SeqPlayStartFX(); + } + if (work->time >= 60) { + work->type = 0; + } + } + else { + if (work->time == 1) { + if (work->state == 1) { + HuAudFXPlay(37); + } + else { + HuAudFXPlay(40); + } + MGSeqPauseEnableCtrl(0); + work->stat |= 0x10; + } + if (work->time <= 20) { + for (i = 1; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); + } + } + time = work->time; + scale = work->scale_x + (0.5 * sin((M_PI * (time * 9.0f)) / 180.0)); + for (j = 0; j < work->word_len; j++) { + HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); + pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (j * 56)); + HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + (sin((M_PI * (time * 9.0f)) / 180.0)), + work->scale_y + (sin((M_PI * (time * 9.0f)) / 180.0))); + } + if (time == 20.0f) { + for (i = 1; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrReset(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); + } + } + } + } + else { + if (work->time > 80 && work->time < 140) { + time = work->time - 80; + for (idx = 0; idx < work->word_len; idx++) { + float radius = (idx * 56) - (((work->word_len - 1) * 56) / 2); + float angle = (1.0f + (1.0f - (ABS(radius) / 320.0f))) * 720.0f; + float new_scale; + radius *= 1.0 - (time / 60.0f); + HuSprPosSet(work->spr_grp[0], idx, (radius * sin(M_PI * (((time / 60.0f) * angle) + 90.0f) / 180.0)) + work->x, + (radius * cos(M_PI * (((time / 60.0f) * angle) + 90.0f) / 180.0)) + work->y); + HuSprZRotSet(work->spr_grp[0], idx, -(time / 60.0f) * 720.0f); + new_scale = 0.5 + (0.5 * (1.0f - (time / 60.0f))); + HuSprScaleSet(work->spr_grp[0], idx, new_scale, new_scale); + HuSprTPLvlSet(work->spr_grp[0], idx, 1.0f - (time / 60.0f)); + } + } + } + if (work->time == 140) { + work->stat |= 0x4; + } + if (work->time >= 150) { + work->type = 0; + work->stat |= 0x8; + } + } + } break; + + case -1: { + work->angle += seqSpeed * 0.1f; + scale = 1.0f - work->angle; + if (scale <= 0.0f) { + scale = 0.0f; + work->type = 0; + work->stat |= 0x8; + if (work->state == 0) { + MGSeqPauseEnableCtrl(1); + } + } + for (idx = 0; idx < work->word_len; idx++) { + HuSprTPLvlSet(work->spr_grp[0], idx, scale); + } + } break; + + default: + + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } static s32 SeqInitFlip(SeqWork *work, va_list params) { - s16 i; - s16 word_grp; - s16 word_ofs; - work->state = va_arg(params, int); - if(work->state == 2) { - return SeqInitDraw(work, params); - } - work->type = 0; - work->angle = 0; - { - s32 word_ofs_temp; - s32 word_katakana; - s32 word_flag; + s16 i; + s16 word_grp; + s16 word_ofs; + work->state = va_arg(params, int); + if (work->state == 2) { + return SeqInitDraw(work, params); + } + work->type = 0; + work->angle = 0; + { + s32 word_ofs_temp; + s32 word_katakana; + s32 word_flag; - if(seqLanguage == 0) { - word_ofs_temp = 3; - } else { - word_ofs_temp = 0; - } - word_ofs = word_ofs_temp; - word_katakana = 0; - if(work->state == 2 && word_ofs == 0) { - word_katakana = 1; - } - if(word_katakana) { - word_flag = 1; - } else { - word_flag = 0; - } - - word_grp = SeqMakeWord(work, wordMgTbl[work->state+word_ofs], word_flag); - } - HuSprGrpPosSet(work->spr_grp[word_grp], 0.0f, 0.0f); - for(i=0; iword_len; i++) { - HuSprTPLvlSet(work->spr_grp[word_grp], i, 0.0f); - HuSprPosSet(work->spr_grp[word_grp], i, (28.0f+(work->x-(0.5f*(work->word_len*56))))+(i*56), work->y); - HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); - HuSprAttrReset(work->spr_grp[word_grp], i, HUSPR_ATTR_DISPOFF); - } - work->alt_word_len = work->word_len; - { - s32 word_ofs_temp; - s32 word_katakana; - s32 word_flag; - - if(seqLanguage == 0) { - word_ofs_temp = 0; - } else { - word_ofs_temp = 3; - } - word_ofs = word_ofs_temp; - word_katakana = 0; - if(work->state == 2 && word_ofs == 0) { - word_katakana = 1; - } - if(word_katakana) { - word_flag = 1; - } else { - word_flag = 0; - } - - word_grp = SeqMakeWord(work, wordMgTbl[work->state+word_ofs], word_flag); - } - HuSprGrpPosSet(work->spr_grp[word_grp], 0.0f, 0.0f); - for(i=0; iword_len; i++) { - HuSprTPLvlSet(work->spr_grp[word_grp], i, 0.0f); - HuSprPosSet(work->spr_grp[word_grp], i, (28.0f+(work->x-(0.5f*(work->word_len*56))))+(i*56), work->y); - HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); - HuSprAttrReset(work->spr_grp[word_grp], i, HUSPR_ATTR_DISPOFF); - } - if(seqPauseF) { - work->type = 2; - HuSprAttrSet(word_grp, 0, HUSPR_ATTR_DISPOFF); - } else { - work->param[0] = 3; - } - return 1; + if (seqLanguage == 0) { + word_ofs_temp = 3; + } + else { + word_ofs_temp = 0; + } + word_ofs = word_ofs_temp; + word_katakana = 0; + if (work->state == 2 && word_ofs == 0) { + word_katakana = 1; + } + if (word_katakana) { + word_flag = 1; + } + else { + word_flag = 0; + } + + word_grp = SeqMakeWord(work, wordMgTbl[work->state + word_ofs], word_flag); + } + HuSprGrpPosSet(work->spr_grp[word_grp], 0.0f, 0.0f); + for (i = 0; i < work->word_len; i++) { + HuSprTPLvlSet(work->spr_grp[word_grp], i, 0.0f); + HuSprPosSet(work->spr_grp[word_grp], i, (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + (i * 56), work->y); + HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); + HuSprAttrReset(work->spr_grp[word_grp], i, HUSPR_ATTR_DISPOFF); + } + work->alt_word_len = work->word_len; + { + s32 word_ofs_temp; + s32 word_katakana; + s32 word_flag; + + if (seqLanguage == 0) { + word_ofs_temp = 0; + } + else { + word_ofs_temp = 3; + } + word_ofs = word_ofs_temp; + word_katakana = 0; + if (work->state == 2 && word_ofs == 0) { + word_katakana = 1; + } + if (word_katakana) { + word_flag = 1; + } + else { + word_flag = 0; + } + + word_grp = SeqMakeWord(work, wordMgTbl[work->state + word_ofs], word_flag); + } + HuSprGrpPosSet(work->spr_grp[word_grp], 0.0f, 0.0f); + for (i = 0; i < work->word_len; i++) { + HuSprTPLvlSet(work->spr_grp[word_grp], i, 0.0f); + HuSprPosSet(work->spr_grp[word_grp], i, (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + (i * 56), work->y); + HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); + HuSprAttrReset(work->spr_grp[word_grp], i, HUSPR_ATTR_DISPOFF); + } + if (seqPauseF) { + work->type = 2; + HuSprAttrSet(word_grp, 0, HUSPR_ATTR_DISPOFF); + } + else { + work->param[0] = 3; + } + return 1; } static s32 SeqUpdateFlip(SeqWork *work) { - s16 idx; - float scale; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - if(work->type == 2) { - return 1; - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->stat |= 0x4; - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - float time; - float pos_x; - s16 i; - if(work->state == 0) { - if(work->time <= 10) { - for(idx=0; idxalt_word_len; idx++) { - HuSprTPLvlSet(work->spr_grp[0], idx, work->time/10.0f); - } - } else { - if(work->time <= 30) { - time = work->time-10; - if(time <= 10) { - for(idx=0; idxalt_word_len; idx++) { - HuSprScaleSet(work->spr_grp[0], idx, cos(M_PI*((time/10.0f)*90.0f)/180.0), 1.0f); - } - } else { - time -= 10.0f; - for(idx=0; idxword_len; idx++) { - HuSprTPLvlSet(work->spr_grp[1], idx, 1.0f); - HuSprScaleSet(work->spr_grp[1], idx, sin(M_PI*((time/10.0f)*90.0f)/180.0), 1.0f); - } - } - } else { - if(work->time > 35 && work->time <= 55) { - time = work->time-35; - scale = 0.5*sin(((time*9.0f)*M_PI)/180.0); - for(i=0; iword_len; i++) { - pos_x = (28.0f*(scale+work->scale_x))+(work->x-(0.5f*((work->word_len*56)*(scale+work->scale_x))))+((i*56)*(scale+work->scale_x)); - HuSprPosSet(work->spr_grp[1], i, pos_x, work->y); - HuSprScaleSet(work->spr_grp[1], i, work->scale_x+scale, work->scale_y+scale); - } - } - } - } - if(work->time == 35) { - HuAudFXPlay(36); - work->stat |= 0x10; - } - if(work->time == 55) { - work->stat |= 0x4; - SeqPlayStartFX(); - } - if(work->time >= 75) { - work->type = 0; - } - } else { - if(work->time == 1) { - if(work->state == 1) { - HuAudFXPlay(37); - } else { - HuAudFXPlay(40); - } - MGSeqPauseEnableCtrl(0); - work->stat |= 0x10; - } - if(work->time <= 20) { - time = work->time; - scale = 0.5*sin(M_PI*(9.0f*time)/180.0); - for(i=0; iword_len; i++) { - HuSprTPLvlSet(work->spr_grp[1], i, 1.0f); - pos_x = (28.0f*(scale+work->scale_x))+(work->x-(0.5f*((work->word_len*56)*(scale+work->scale_x))))+((i*56)*(scale+work->scale_x)); - HuSprPosSet(work->spr_grp[1], i, pos_x, work->y); - HuSprScaleSet(work->spr_grp[1], i, work->scale_x+scale, work->scale_y+scale); - } - } else { - if(work->time > 80 && work->time <= 160) { - time = work->time-80; - for(idx=0; idxword_len; idx++) { - scale = time-(idx*2); - if(scale < 0 || scale > 15.0f) { - continue; - } - HuSprScaleSet(work->spr_grp[1], idx, cos(M_PI*((scale/15.0f)*90.0f)/180.0), 1.0f); - } - for(idx=0; idxalt_word_len; idx++) { - scale = (time-15.0f)-(idx*2); - if(scale < 0 || scale > 30.0f) { - continue; - } - HuSprTPLvlSet(work->spr_grp[0], idx, 1.0f); - HuSprScaleSet(work->spr_grp[0], idx, sin(M_PI*((scale/30.0f)*180.0f)/180.0), 1.0f); - } - } - } - if(work->time == 160) { - work->stat |= 0x4; - } - if(work->time >= 160) { - work->type = 0; - work->stat |= 0x8; - } - } - } - break; - - case -1: - { - work->angle += seqSpeed*0.1f; - scale = 1.0f-work->angle; - if(scale <= 0.0f) { - scale = 0.0f; - work->type = 0; - work->stat |= 0x8; - if(work->state == 0) { - MGSeqPauseEnableCtrl(1); - } - } - for(idx=0; idxword_len; idx++) { - HuSprTPLvlSet(work->spr_grp[1], idx, scale); - } - } - break; - - default: - break; - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s16 idx; + float scale; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + if (work->type == 2) { + return 1; + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->stat |= 0x4; + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + float time; + float pos_x; + s16 i; + if (work->state == 0) { + if (work->time <= 10) { + for (idx = 0; idx < work->alt_word_len; idx++) { + HuSprTPLvlSet(work->spr_grp[0], idx, work->time / 10.0f); + } + } + else { + if (work->time <= 30) { + time = work->time - 10; + if (time <= 10) { + for (idx = 0; idx < work->alt_word_len; idx++) { + HuSprScaleSet(work->spr_grp[0], idx, cos(M_PI * ((time / 10.0f) * 90.0f) / 180.0), 1.0f); + } + } + else { + time -= 10.0f; + for (idx = 0; idx < work->word_len; idx++) { + HuSprTPLvlSet(work->spr_grp[1], idx, 1.0f); + HuSprScaleSet(work->spr_grp[1], idx, sin(M_PI * ((time / 10.0f) * 90.0f) / 180.0), 1.0f); + } + } + } + else { + if (work->time > 35 && work->time <= 55) { + time = work->time - 35; + scale = 0.5 * sin(((time * 9.0f) * M_PI) / 180.0); + for (i = 0; i < work->word_len; i++) { + pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + + ((i * 56) * (scale + work->scale_x)); + HuSprPosSet(work->spr_grp[1], i, pos_x, work->y); + HuSprScaleSet(work->spr_grp[1], i, work->scale_x + scale, work->scale_y + scale); + } + } + } + } + if (work->time == 35) { + HuAudFXPlay(36); + work->stat |= 0x10; + } + if (work->time == 55) { + work->stat |= 0x4; + SeqPlayStartFX(); + } + if (work->time >= 75) { + work->type = 0; + } + } + else { + if (work->time == 1) { + if (work->state == 1) { + HuAudFXPlay(37); + } + else { + HuAudFXPlay(40); + } + MGSeqPauseEnableCtrl(0); + work->stat |= 0x10; + } + if (work->time <= 20) { + time = work->time; + scale = 0.5 * sin(M_PI * (9.0f * time) / 180.0); + for (i = 0; i < work->word_len; i++) { + HuSprTPLvlSet(work->spr_grp[1], i, 1.0f); + pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + + ((i * 56) * (scale + work->scale_x)); + HuSprPosSet(work->spr_grp[1], i, pos_x, work->y); + HuSprScaleSet(work->spr_grp[1], i, work->scale_x + scale, work->scale_y + scale); + } + } + else { + if (work->time > 80 && work->time <= 160) { + time = work->time - 80; + for (idx = 0; idx < work->word_len; idx++) { + scale = time - (idx * 2); + if (scale < 0 || scale > 15.0f) { + continue; + } + HuSprScaleSet(work->spr_grp[1], idx, cos(M_PI * ((scale / 15.0f) * 90.0f) / 180.0), 1.0f); + } + for (idx = 0; idx < work->alt_word_len; idx++) { + scale = (time - 15.0f) - (idx * 2); + if (scale < 0 || scale > 30.0f) { + continue; + } + HuSprTPLvlSet(work->spr_grp[0], idx, 1.0f); + HuSprScaleSet(work->spr_grp[0], idx, sin(M_PI * ((scale / 30.0f) * 180.0f) / 180.0), 1.0f); + } + } + } + if (work->time == 160) { + work->stat |= 0x4; + } + if (work->time >= 160) { + work->type = 0; + work->stat |= 0x8; + } + } + } break; + + case -1: { + work->angle += seqSpeed * 0.1f; + scale = 1.0f - work->angle; + if (scale <= 0.0f) { + scale = 0.0f; + work->type = 0; + work->stat |= 0x8; + if (work->state == 0) { + MGSeqPauseEnableCtrl(1); + } + } + for (idx = 0; idx < work->word_len; idx++) { + HuSprTPLvlSet(work->spr_grp[1], idx, scale); + } + } break; + + default: + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } static s32 SeqUpdateMGBowser(SeqWork *work) { - s16 idx; - float scale; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - if(work->type == 2) { - return 1; - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->stat |= 0x4; - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - s16 i; - s16 j; - float angle; - float time_angle; - float time; - float pos_x, pos_y; - - float temp_f25; - float center_x; - s16 spr_idx[16]; - float scale_arr[16]; - - - if(work->state == 0) { - if(work->time <= 60) { - center_x = (0.5*(work->word_len*56))+20.0; - for(idx=0; idxword_len; idx++) { - time = work->time-idx; - if(time < 0) { - scale_arr[idx] = 0.0f; - spr_idx[idx] = idx; - } else { - if(time > 50.0f) { - time = 50.0f; - } - time_angle = 540.0*(1.0f-(time/50.0f)); - pos_x = (28.0f+(0.5f*-(work->word_len*56)))+(idx*56); - angle = 180.0*(atan2(pos_x, center_x)/M_PI); - pos_x = work->x+(center_x*sin(M_PI*(angle+time_angle)/180.0)); - pos_y = work->y-(HU_DISP_CENTERY*(1.0-(time/50.0f))); - HuSprPosSet(work->spr_grp[0], idx, pos_x, pos_y); - temp_f25 = 0.9+(0.1*cos(M_PI*(angle+time_angle)/180.0)); - HuSprScaleSet(work->spr_grp[0], idx, temp_f25*cos(M_PI*(angle+time_angle)/180.0), temp_f25); - scale_arr[idx] = cos(M_PI*(angle+time_angle)/180.0); - spr_idx[idx] = idx; - } - } - for(i=1; iword_len; i++) { - for(idx=0; idxword_len-i; idx++) { - if(scale_arr[idx] > scale_arr[idx+1]) { - j= spr_idx[idx]; - spr_idx[idx] = spr_idx[idx+1]; - spr_idx[idx+1] = j; - angle = scale_arr[idx]; - scale_arr[idx] = scale_arr[idx+1]; - scale_arr[idx+1] = angle; - } - } - } - for(idx=0; idxword_len; idx++) { - HuSprPriSet(work->spr_grp[0], spr_idx[idx], idx+5); - } - } else { - if(work->time > 60 && work->time <= 80) { - time = work->time-60; - scale = 0.5*sin(((time*9.0f)*M_PI)/180.0); - for(i=0; iword_len; i++) { - pos_x = (28.0f*(scale+work->scale_x))+(work->x-(0.5f*((work->word_len*56)*(scale+work->scale_x))))+((i*56)*(scale+work->scale_x)); - HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], i, work->scale_x+scale, work->scale_y+scale); - } - } - - } - if(work->time == 60) { - HuAudFXPlay(36); - work->stat |= 0x10; - } - if(work->time == 80) { - work->stat |= 0x4; - SeqPlayStartFX(); - } - if(work->time >= 100) { - work->type = 0; - } - } else { - if(work->time == 1) { - if(work->state == 1) { - HuAudFXPlay(37); - } else { - HuAudFXPlay(40); - } - MGSeqPauseEnableCtrl(0); - work->stat |= 0x10; - } - if(work->time <= 20) { - for(j=1; j<4; j++) { - for(i=0; iword_len; i++) { - HuSprAttrSet(work->spr_grp[j], i, HUSPR_ATTR_DISPOFF); - } - } - time = work->time; - scale = work->scale_x+(0.5*sin(((time*9.0f)*M_PI)/180.0)); - for(i=0; iword_len; i++) { - HuSprAttrReset(work->spr_grp[0], i, HUSPR_ATTR_DISPOFF); - pos_x = ((28.0f*scale)+(work->x-(0.5f*(scale*(work->word_len*56)))))+(scale*(i*56)); - HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], i, work->scale_x+(sin((M_PI*(time*9.0f))/180.0)), work->scale_y+(sin((M_PI*(time*9.0f))/180.0))); - } - if(time == 20.0f) { - for(j=1; j<4; j++) { - for(i=0; iword_len; i++) { - HuSprAttrReset(work->spr_grp[j], i, HUSPR_ATTR_DISPOFF); - } - } - } - } else { - if(work->time > 80 && work->time <= 125) { - static float letterOfs[] = { - -30, -30, - HU_DISP_WIDTH+30, -30, - HU_DISP_CENTERX+52, HU_DISP_HEIGHT+30, - HU_DISP_WIDTH+30, HU_DISP_HEIGHT+30, - -30, HU_DISP_HEIGHT-30, - HU_DISP_WIDTH+30, 120, - HU_DISP_CENTERX+162, -30, - }; - for(i=0; i<4; i++) { - time = work->time-80-i; - if(time < 0.0f || time > 15.0f) { - continue; - } - for(idx=0; idxword_len; idx++) { - pos_x = (28.0f+(work->x-(0.5f*(work->word_len*56))))+(idx*56); - pos_x += (time/15.0f)*(letterOfs[(idx*2)]-pos_x); - pos_y = work->y+((time/15.0f)*(letterOfs[(idx*2)+1]-work->y)); - HuSprPosSet(work->spr_grp[i], idx, pos_x, pos_y); - } - } - } - } - if(work->time == 125) { - work->stat |= 0x4; - } - if(work->time >= 135) { - work->type = 0; - work->stat |= 0x8; - } - } - } - break; - - case -1: - { - work->angle += seqSpeed*0.1f; - scale = 1.0f-work->angle; - if(scale <= 0.0f) { - scale = 0.0f; - work->type = 0; - work->stat |= 0x8; - if(work->state == 0) { - MGSeqPauseEnableCtrl(1); - } - } - for(idx=0; idxword_len; idx++) { - HuSprTPLvlSet(work->spr_grp[0], idx, scale); - } - } - break; - - default: - break; - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s16 idx; + float scale; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + if (work->type == 2) { + return 1; + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->stat |= 0x4; + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + s16 i; + s16 j; + float angle; + float time_angle; + float time; + float pos_x, pos_y; + + float temp_f25; + float center_x; + s16 spr_idx[16]; + float scale_arr[16]; + + if (work->state == 0) { + if (work->time <= 60) { + center_x = (0.5 * (work->word_len * 56)) + 20.0; + for (idx = 0; idx < work->word_len; idx++) { + time = work->time - idx; + if (time < 0) { + scale_arr[idx] = 0.0f; + spr_idx[idx] = idx; + } + else { + if (time > 50.0f) { + time = 50.0f; + } + time_angle = 540.0 * (1.0f - (time / 50.0f)); + pos_x = (28.0f + (0.5f * -(work->word_len * 56))) + (idx * 56); + angle = 180.0 * (atan2(pos_x, center_x) / M_PI); + pos_x = work->x + (center_x * sin(M_PI * (angle + time_angle) / 180.0)); + pos_y = work->y - (HU_DISP_CENTERY * (1.0 - (time / 50.0f))); + HuSprPosSet(work->spr_grp[0], idx, pos_x, pos_y); + temp_f25 = 0.9 + (0.1 * cos(M_PI * (angle + time_angle) / 180.0)); + HuSprScaleSet(work->spr_grp[0], idx, temp_f25 * cos(M_PI * (angle + time_angle) / 180.0), temp_f25); + scale_arr[idx] = cos(M_PI * (angle + time_angle) / 180.0); + spr_idx[idx] = idx; + } + } + for (i = 1; i < work->word_len; i++) { + for (idx = 0; idx < work->word_len - i; idx++) { + if (scale_arr[idx] > scale_arr[idx + 1]) { + j = spr_idx[idx]; + spr_idx[idx] = spr_idx[idx + 1]; + spr_idx[idx + 1] = j; + angle = scale_arr[idx]; + scale_arr[idx] = scale_arr[idx + 1]; + scale_arr[idx + 1] = angle; + } + } + } + for (idx = 0; idx < work->word_len; idx++) { + HuSprPriSet(work->spr_grp[0], spr_idx[idx], idx + 5); + } + } + else { + if (work->time > 60 && work->time <= 80) { + time = work->time - 60; + scale = 0.5 * sin(((time * 9.0f) * M_PI) / 180.0); + for (i = 0; i < work->word_len; i++) { + pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + + ((i * 56) * (scale + work->scale_x)); + HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], i, work->scale_x + scale, work->scale_y + scale); + } + } + } + if (work->time == 60) { + HuAudFXPlay(36); + work->stat |= 0x10; + } + if (work->time == 80) { + work->stat |= 0x4; + SeqPlayStartFX(); + } + if (work->time >= 100) { + work->type = 0; + } + } + else { + if (work->time == 1) { + if (work->state == 1) { + HuAudFXPlay(37); + } + else { + HuAudFXPlay(40); + } + MGSeqPauseEnableCtrl(0); + work->stat |= 0x10; + } + if (work->time <= 20) { + for (j = 1; j < 4; j++) { + for (i = 0; i < work->word_len; i++) { + HuSprAttrSet(work->spr_grp[j], i, HUSPR_ATTR_DISPOFF); + } + } + time = work->time; + scale = work->scale_x + (0.5 * sin(((time * 9.0f) * M_PI) / 180.0)); + for (i = 0; i < work->word_len; i++) { + HuSprAttrReset(work->spr_grp[0], i, HUSPR_ATTR_DISPOFF); + pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (i * 56)); + HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], i, work->scale_x + (sin((M_PI * (time * 9.0f)) / 180.0)), + work->scale_y + (sin((M_PI * (time * 9.0f)) / 180.0))); + } + if (time == 20.0f) { + for (j = 1; j < 4; j++) { + for (i = 0; i < work->word_len; i++) { + HuSprAttrReset(work->spr_grp[j], i, HUSPR_ATTR_DISPOFF); + } + } + } + } + else { + if (work->time > 80 && work->time <= 125) { + static float letterOfs[] = { + -30, + -30, + HU_DISP_WIDTH + 30, + -30, + HU_DISP_CENTERX + 52, + HU_DISP_HEIGHT + 30, + HU_DISP_WIDTH + 30, + HU_DISP_HEIGHT + 30, + -30, + HU_DISP_HEIGHT - 30, + HU_DISP_WIDTH + 30, + 120, + HU_DISP_CENTERX + 162, + -30, + }; + for (i = 0; i < 4; i++) { + time = work->time - 80 - i; + if (time < 0.0f || time > 15.0f) { + continue; + } + for (idx = 0; idx < work->word_len; idx++) { + pos_x = (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + (idx * 56); + pos_x += (time / 15.0f) * (letterOfs[(idx * 2)] - pos_x); + pos_y = work->y + ((time / 15.0f) * (letterOfs[(idx * 2) + 1] - work->y)); + HuSprPosSet(work->spr_grp[i], idx, pos_x, pos_y); + } + } + } + } + if (work->time == 125) { + work->stat |= 0x4; + } + if (work->time >= 135) { + work->type = 0; + work->stat |= 0x8; + } + } + } break; + + case -1: { + work->angle += seqSpeed * 0.1f; + scale = 1.0f - work->angle; + if (scale <= 0.0f) { + scale = 0.0f; + work->type = 0; + work->stat |= 0x8; + if (work->state == 0) { + MGSeqPauseEnableCtrl(1); + } + } + for (idx = 0; idx < work->word_len; idx++) { + HuSprTPLvlSet(work->spr_grp[0], idx, scale); + } + } break; + + default: + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } static s32 SeqInitDraw(SeqWork *work, va_list params) { - s16 word_grp; - work->state = 2; - work->seq_no = 13; - work->type = 0; - work->angle = 0.0f; - { - s32 word_flag; - s32 word_ofs; + s16 word_grp; + work->state = 2; + work->seq_no = 13; + work->type = 0; + work->angle = 0.0f; + { + s32 word_flag; + s32 word_ofs; - if(seqLanguage == 0) { - word_flag = 1; - } else { - word_flag = 0; - } - if(seqLanguage == 0) { - word_ofs = 0; - } else { - word_ofs = 3; - } - - word_grp = SeqMakeWord(work, wordMgTbl[2+word_ofs], word_flag); - } - HuSprGrpPosSet(work->spr_grp[word_grp], HU_DISP_CENTERX, HU_DISP_CENTERY); - work->param[0] = 3; - return 1; + if (seqLanguage == 0) { + word_flag = 1; + } + else { + word_flag = 0; + } + if (seqLanguage == 0) { + word_ofs = 0; + } + else { + word_ofs = 3; + } + + word_grp = SeqMakeWord(work, wordMgTbl[2 + word_ofs], word_flag); + } + HuSprGrpPosSet(work->spr_grp[word_grp], HU_DISP_CENTERX, HU_DISP_CENTERY); + work->param[0] = 3; + return 1; } static s32 SeqUpdateDraw(SeqWork *work) { - s16 idx; - float scale; - s16 group = work->spr_grp[0]; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->stat |= 0x4; - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - float time; - float scale; - float zrot; - if(work->time <= 20) { - time = work->time; - zrot = 365.0f*(time/20.0f); - scale = 1.3f*sin(M_PI*(90.0f*(time/20.0f))/180.0); - HuSprGrpScaleSet(group, scale, scale); - HuSprGrpZRotSet(group, zrot); - } - if(work->time > 20 && work->time <= 25) { - HuSprGrpZRotSet(group, 0.0f); - time = work->time-20; - scale = 1.0+(0.3*cos(M_PI*(90.0f*(time/5.0f))/180.0)); - HuSprGrpScaleSet(group, scale, scale); - } - if(work->time == 5) { - HuAudFXPlay(40); - } - if(work->time == 60) { - work->type = 0; - } - } - break; - - case -1: - { - float tp_lvl; - work->angle += seqSpeed*0.1f; - tp_lvl = 1.0f-work->angle; - if(tp_lvl <= 0.0f) { - tp_lvl = 0.0f; - work->state = 0; - work->stat |= 0x8; - } - HuSprGrpTPLvlSet(group, tp_lvl); - } - break; - - default: - break; - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s16 idx; + float scale; + s16 group = work->spr_grp[0]; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->stat |= 0x4; + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + float time; + float scale; + float zrot; + if (work->time <= 20) { + time = work->time; + zrot = 365.0f * (time / 20.0f); + scale = 1.3f * sin(M_PI * (90.0f * (time / 20.0f)) / 180.0); + HuSprGrpScaleSet(group, scale, scale); + HuSprGrpZRotSet(group, zrot); + } + if (work->time > 20 && work->time <= 25) { + HuSprGrpZRotSet(group, 0.0f); + time = work->time - 20; + scale = 1.0 + (0.3 * cos(M_PI * (90.0f * (time / 5.0f)) / 180.0)); + HuSprGrpScaleSet(group, scale, scale); + } + if (work->time == 5) { + HuAudFXPlay(40); + } + if (work->time == 60) { + work->type = 0; + } + } break; + + case -1: { + float tp_lvl; + work->angle += seqSpeed * 0.1f; + tp_lvl = 1.0f - work->angle; + if (tp_lvl <= 0.0f) { + tp_lvl = 0.0f; + work->state = 0; + work->stat |= 0x8; + } + HuSprGrpTPLvlSet(group, tp_lvl); + } break; + + default: + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } -static char *winCharNameTbl[] = { - "マリオ", - "MARIO", - "ルイージ", - "LUIGI", - "ピーチ", - "PEACH", - "ヨッシー", - "YOSHI", - "ワリオ", - "WARIO", - "ドンキー", - " DK ", - "デイジー", - "DAISY", - "ワルイージ", - "WALUIGI", - "クッパ", - "BOWSER", - "キノピオ", - "TOAD", - "ヘイホー", - "SHY GUY", - "テレサ", - "BOO", - "ノコノコ", - "KOOPA", - "ミニクッパ", - "KOOPA KID", - "クリボー", - "GOOMBA" -}; +static char *winCharNameTbl[] + = { "マリオ", "MARIO", "ルイージ", "LUIGI", "ピーチ", "PEACH", "ヨッシー", "YOSHI", "ワリオ", "WARIO", "ドンキー", " DK ", "デイジー", "DAISY", "ワルイージ", "WALUIGI", + "クッパ", "BOWSER", "キノピオ", "TOAD", "ヘイホー", "SHY GUY", "テレサ", "BOO", "ノコノコ", "KOOPA", "ミニクッパ", VERSION_NTSC ? "KOOPA KID" : "MINI BOWSER", "クリボー", "GOOMBA" }; -static char *winWordTbl[] = { - "カチ", - "WON!", - "ハイボク", - "LOSE", - "ユウショウ!", - "CHAMPION!" -}; +static char *winWordTbl[] = { "カチ", "WON!", "ハイボク", "LOSE", "ユウショウ!", "CHAMPION!" }; -static s16 winPosOfs[][5][2] = { - { - { 114, 0 }, - { -144, 0 }, - { 0, 0 }, - { 0, 0 }, - { 0, 0 } - }, - { - { 0, 35 }, - { -144, -35 }, - { 144, -35 }, - { 0, 0 }, - { 0, 0 } - }, - { - { 0, 105 }, - { 0, -105 }, - { -144, 0 }, - { 144, 0 }, - { 0, 0 } - }, - { - { 0, 105 }, - { -144, -105 }, - { 144, -105 }, - { -144, 0 }, - { 144, 0 } - } -}; +static s16 winPosOfs[][5][2] + = { { { 114, 0 }, { -144, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, { { 0, 35 }, { -144, -35 }, { 144, -35 }, { 0, 0 }, { 0, 0 } }, + { { 0, 105 }, { 0, -105 }, { -144, 0 }, { 144, 0 }, { 0, 0 } }, { { 0, 105 }, { -144, -105 }, { 144, -105 }, { -144, 0 }, { 144, 0 } } }; static s16 winnerNameW[8]; #define GET_LANG_IDX() ((seqLanguage == 0) ? 0 : 1) #define GET_WIN_KANAF() ((seqLanguage == 0) ? 1 : 0) - static s32 SeqInitWin(SeqWork *work, va_list params) { - int win_type = va_arg(params, int); - s16 word_idx; - s16 word_grp; - s32 i; - s32 j; - s32 num_winners; - float word_w; - float word_x; - if(win_type < 0 && win_type >= 6) { - return 0; - } - if(win_type == 3) { - word_idx = GET_LANG_IDX(); - } else { - if(win_type == 4) { - word_idx = GET_LANG_IDX()+2; - } else { - word_idx = GET_LANG_IDX()+4; - } - } - word_grp = SeqMakeWord(work, winWordTbl[word_idx], GET_WIN_KANAF()); - winnerNameW[0] = work->word_len*50; - for(i=0; iword_len; i++) { - HuSprPosSet(work->spr_grp[word_grp], i, 25.0f+((i*50)-(0.5f*(work->word_len*50))), 0.0f); - HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); - } - num_winners = 0; - work->win_scale = 1.0f; - for(j=0; j<4; j++) { - int winner = va_arg(params, int); - if(winner < 0) { - continue; - } - word_grp = SeqMakeWord(work, winCharNameTbl[(winner*2)+GET_LANG_IDX()], 0); - if(seqLanguage != 0) { - char *name = winCharNameTbl[(winner*2)+GET_LANG_IDX()]; - word_w = 0.0f; - for(i=word_w; iword_len; i++, name++) { - if(*name == ' ') { - word_w += 30.0f; - } else { - word_w += 50.0f; - } - } - name = winCharNameTbl[(winner*2)+GET_LANG_IDX()]; - word_x = 0.0f; - for(i=word_x; iword_len; i++, name++) { - HuSprPosSet(work->spr_grp[word_grp], i, 25.0+(word_x-(0.5*word_w)), 0.0f); - HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); - if(*name == ' ') { - word_x += 30.0f; - } else { - word_x += 50.0f; - } - } - if(work->win_scale == 0.6f || winner == 7 || winner == 13 || winner == 10) { - work->win_scale = 0.6f; - } else { - work->win_scale = 0.75f; - } - winnerNameW[num_winners+1] = word_w; - } else { - if(winner == 7 || winner == 13) { - for(i=0;iword_len; i++) { - HuSprPosSet(work->spr_grp[word_grp], i, 26.0f+((i*52)-(0.5f*(work->word_len*52))), 0.0f); - HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); - } - work->win_scale = 0.8f; - winnerNameW[num_winners+1] = work->word_len*52; - } else { - work->win_scale = 1.0f; - winnerNameW[num_winners+1] = work->word_len*56; - } - - } - num_winners++; - } - if(num_winners == 0) { - return 0; - } - work->state = 0; - work->word_len = num_winners+1; - work->angle = 0.0f; - work->type = 0; - for(j=0; jwin_scale)); - if(j == 0) { - word_x = (((HU_DISP_WIDTH-word_x)/2.0f)+(word_x-(winnerNameW[0]/2)))-HU_DISP_CENTERX; - } else { - word_x = (((HU_DISP_WIDTH-word_x)/2.0f)+(winnerNameW[1]/2))-HU_DISP_CENTERX; - } - } else { - if(abs(winPosOfs[num_winners-1][j][0]) == 144.0f) { - if(winnerNameW[j]+32 < HU_DISP_CENTERX) { - word_x = 176.0f; - } else { - word_x = 32.0f+((winnerNameW[j]*work->win_scale)/2.0f); - } - if(winPosOfs[num_winners-1][j][0] < 0) { - word_x = -(HU_DISP_CENTERX-word_x); - } else { - word_x = (HU_DISP_WIDTH-word_x)-HU_DISP_CENTERX; - } - } else { - word_x = winPosOfs[num_winners-1][j][0]; - } - } - HuSprGrpPosSet(work->spr_grp[j], HU_DISP_CENTERX+word_x, HU_DISP_CENTERY+winPosOfs[num_winners-1][j][1]); - } - if(seqPauseF) { - work->type = 1; - num_winners++; - for(j=0; jspr_grp[j], 0, HUSPR_ATTR_DISPOFF); - } - } else { - work->param[0] = 3; - } - return 1; + int win_type = va_arg(params, int); + s16 word_idx; + s16 word_grp; + s32 i; + s32 j; + s32 num_winners; + float word_w; + float word_x; + if (win_type < 0 && win_type >= 6) { + return 0; + } + if (win_type == 3) { + word_idx = GET_LANG_IDX(); + } + else { + if (win_type == 4) { + word_idx = GET_LANG_IDX() + 2; + } + else { + word_idx = GET_LANG_IDX() + 4; + } + } + word_grp = SeqMakeWord(work, winWordTbl[word_idx], GET_WIN_KANAF()); + winnerNameW[0] = work->word_len * 50; + for (i = 0; i < work->word_len; i++) { + HuSprPosSet(work->spr_grp[word_grp], i, 25.0f + ((i * 50) - (0.5f * (work->word_len * 50))), 0.0f); + HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); + } + num_winners = 0; + work->win_scale = 1.0f; + for (j = 0; j < 4; j++) { + int winner = va_arg(params, int); + (void)winner; // to match PAL + if (winner < 0) { + continue; + } + word_grp = SeqMakeWord(work, winCharNameTbl[(winner * 2) + GET_LANG_IDX()], 0); +#if VERSION_NTSC + if (seqLanguage != 0) { + char *name = winCharNameTbl[(winner * 2) + GET_LANG_IDX()]; + word_w = 0.0f; + for (i = word_w; i < work->word_len; i++, name++) { + if (*name == ' ') { + word_w += 30.0f; + } + else { + word_w += 50.0f; + } + } + name = winCharNameTbl[(winner * 2) + GET_LANG_IDX()]; + word_x = 0.0f; + for (i = word_x; i < work->word_len; i++, name++) { + HuSprPosSet(work->spr_grp[word_grp], i, 25.0 + (word_x - (0.5 * word_w)), 0.0f); + HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); + if (*name == ' ') { + word_x += 30.0f; + } + else { + word_x += 50.0f; + } + } + if (work->win_scale == 0.6f || winner == 7 || winner == 13 || winner == 10) { + work->win_scale = 0.6f; + } + else { + work->win_scale = 0.75f; + } + winnerNameW[num_winners + 1] = word_w; + } + else { + if (winner == 7 || winner == 13) { + for (i = 0; i < work->word_len; i++) { + HuSprPosSet(work->spr_grp[word_grp], i, 26.0f + ((i * 52) - (0.5f * (work->word_len * 52))), 0.0f); + HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); + } + work->win_scale = 0.8f; + winnerNameW[num_winners + 1] = work->word_len * 52; + } + else { + work->win_scale = 1.0f; + winnerNameW[num_winners + 1] = work->word_len * 56; + } + } +#else + for (i = 0; i < work->word_len; i++) { + HuSprPosSet(work->spr_grp[word_grp], i, 25.0f + ((i * 50) - (0.5f * (work->word_len * 50))), 0.0f); + HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); + } + if ((work->win_scale == 0.5f) || (winner == 13)) { + work->win_scale = 0.5f; + } + else if ((work->win_scale == 0.6f) || (winner == 7) || (winner == 10)) { + work->win_scale = 0.6f; + } + else { + work->win_scale = 0.75f; + } + winnerNameW[num_winners + 1] = work->word_len * 50; +#endif + num_winners++; + } + if (num_winners == 0) { + return 0; + } + work->state = 0; + work->word_len = num_winners + 1; + work->angle = 0.0f; + work->type = 0; + for (j = 0; j < num_winners + 1; j++) { + if (num_winners == 1) { + word_x = 32.0f + ((float)winnerNameW[0] + (winnerNameW[1] * work->win_scale)); + if (j == 0) { + word_x = (((HU_DISP_WIDTH - word_x) / 2.0f) + (word_x - (winnerNameW[0] / 2))) - HU_DISP_CENTERX; + } + else { + word_x = (((HU_DISP_WIDTH - word_x) / 2.0f) + (winnerNameW[1] / 2)) - HU_DISP_CENTERX; + } + } + else { + if (abs(winPosOfs[num_winners - 1][j][0]) == 144.0f) { +#if VERSION_NTSC + if (winnerNameW[j] + 32 < HU_DISP_CENTERX) { + word_x = 176.0f; + } + else { + word_x = 32.0f + ((winnerNameW[j] * work->win_scale) / 2.0f); + } + if (winPosOfs[num_winners - 1][j][0] < 0) { + word_x = -(HU_DISP_CENTERX - word_x); + } + else { + word_x = (HU_DISP_WIDTH - word_x) - HU_DISP_CENTERX; + } +#else + if (32.0f + (work->win_scale * winnerNameW[j]) < HU_DISP_CENTERX) { + word_x = 32.0f + ((winnerNameW[j] * work->win_scale) / 2.0f); + } + else { + word_x = 120.0f; + } + if (winPosOfs[num_winners - 1][j][0] < 0) { + word_x = -word_x; + } +#endif + } + else { + word_x = winPosOfs[num_winners - 1][j][0]; + } + } + HuSprGrpPosSet(work->spr_grp[j], HU_DISP_CENTERX + word_x, HU_DISP_CENTERY + winPosOfs[num_winners - 1][j][1]); + } + if (seqPauseF) { + work->type = 1; + num_winners++; + for (j = 0; j < num_winners; j++) { + HuSprAttrSet(work->spr_grp[j], 0, HUSPR_ATTR_DISPOFF); + } + } + else { + work->param[0] = 3; + } + return 1; } - static s32 SeqUpdateWin(SeqWork *work) { - s32 idx; - float tp_lvl; - s16 group = work->spr_grp[0]; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->stat |= 0x4; - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - float time; - float scale; - float zrot; - if(work->time <= 20) { - time = work->time; - zrot = 365.0f*(time/20.0f); - scale = sin(M_PI*(90.0f*(time/20.0f))/180.0); - HuSprGrpScaleSet(work->spr_grp[0], scale, scale); - HuSprGrpZRotSet(work->spr_grp[0], zrot); - scale = 1.0+(5.0*cos(M_PI*(90.0f*(time/20.0f))/180.0)); - tp_lvl = time/20.0f; - for(idx=1; idxword_len; idx++) { - HuSprGrpTPLvlSet(work->spr_grp[idx], tp_lvl); - HuSprGrpScaleSet(work->spr_grp[idx], scale*work->win_scale, scale); - } - } - if(work->time > 20 && work->time <= 22) { - HuSprGrpZRotSet(work->spr_grp[0], 0.0f); - for(idx=1; idxword_len; idx++) { - float pos_x; - float ofs[2]; - if(work->time == 21) { - ofs[0] = ((idx & 0x1)*2)-1; - ofs[1] = (idx & 0x2) ? 2 : -1; - } else { - ofs[0] = ofs[1] = 0.0f; - } - if(work->word_len == 2) { - pos_x = winnerNameW[1]+winnerNameW[0]+32; - pos_x = (((HU_DISP_WIDTH-pos_x)/2.0f)+(winnerNameW[1]/2))-HU_DISP_CENTERX; - } else { - if(abs(winPosOfs[work->word_len-2][idx][0]) == 144.0f) { - if(winnerNameW[idx]+32 < HU_DISP_CENTERX) { - pos_x = 176.0f; - } else { - pos_x = 32.0f+((winnerNameW[idx]*work->win_scale)/2.0f); - } - if(winPosOfs[work->word_len-2][idx][0] < 0) { - pos_x = -(HU_DISP_CENTERX-pos_x); - } else { - pos_x = (HU_DISP_WIDTH-pos_x)-HU_DISP_CENTERX; - } - } else { - pos_x = winPosOfs[work->word_len-2][idx][0]; - } - } - HuSprGrpPosSet(work->spr_grp[idx], (HU_DISP_CENTERX+pos_x)+ofs[0], ofs[1]+(HU_DISP_CENTERY+winPosOfs[work->word_len-2][idx][1])); - } - } - if(work->time == 125) { - work->type = 0; - } - } - break; - - case -1: - { - work->angle += seqSpeed*0.1f; - tp_lvl = 1.0f-work->angle; - if(tp_lvl <= 0.0f) { - tp_lvl = 0.0f; - work->state = 0; - work->stat |= 0x8; - } - for(idx=0; idxword_len; idx++) { - HuSprGrpTPLvlSet(work->spr_grp[idx], tp_lvl); - } - } - break; - - default: - break; - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s32 idx; + float tp_lvl; + s16 group = work->spr_grp[0]; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->stat |= 0x4; + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + float time; + float scale; + float zrot; + if (work->time <= 20) { + time = work->time; + zrot = 365.0f * (time / 20.0f); + scale = sin(M_PI * (90.0f * (time / 20.0f)) / 180.0); + HuSprGrpScaleSet(work->spr_grp[0], scale, scale); + HuSprGrpZRotSet(work->spr_grp[0], zrot); + scale = 1.0 + (5.0 * cos(M_PI * (90.0f * (time / 20.0f)) / 180.0)); + tp_lvl = time / 20.0f; + for (idx = 1; idx < work->word_len; idx++) { + HuSprGrpTPLvlSet(work->spr_grp[idx], tp_lvl); + HuSprGrpScaleSet(work->spr_grp[idx], scale * work->win_scale, scale); + } + } + if (work->time > 20 && work->time <= 22) { + HuSprGrpZRotSet(work->spr_grp[0], 0.0f); + for (idx = 1; idx < work->word_len; idx++) { + float pos_x; + float ofs[2]; + if (work->time == 21) { + ofs[0] = ((idx & 0x1) * 2) - 1; + ofs[1] = (idx & 0x2) ? 2 : -1; + } + else { + ofs[0] = ofs[1] = 0.0f; + } + if (work->word_len == 2) { + pos_x = winnerNameW[1] + winnerNameW[0] + 32; + pos_x = (((HU_DISP_WIDTH - pos_x) / 2.0f) + (winnerNameW[1] / 2)) - HU_DISP_CENTERX; + } + else { + if (abs(winPosOfs[work->word_len - 2][idx][0]) == 144.0f) { + if (winnerNameW[idx] + 32 < HU_DISP_CENTERX) { + pos_x = VERSION_NTSC ? 176.0f : winnerNameW[idx] / 2 + 32; + } + else { + pos_x = VERSION_NTSC ? 32.0f + ((winnerNameW[idx] * work->win_scale) / 2.0f) : 128.0f; + } + if (winPosOfs[work->word_len - 2][idx][0] < 0) { + pos_x = VERSION_NTSC ? -(HU_DISP_CENTERX - pos_x) : -pos_x; + } +#if VERSION_NTSC + else { + pos_x = (HU_DISP_WIDTH - pos_x) - HU_DISP_CENTERX; + } +#endif + } + else { + pos_x = winPosOfs[work->word_len - 2][idx][0]; + } + } + HuSprGrpPosSet(work->spr_grp[idx], (HU_DISP_CENTERX + pos_x) + ofs[0], + ofs[1] + (HU_DISP_CENTERY + winPosOfs[work->word_len - 2][idx][1])); + } + } + if (work->time == 125) { + work->type = 0; + } + } break; + + case -1: { + work->angle += seqSpeed * 0.1f; + tp_lvl = 1.0f - work->angle; + if (tp_lvl <= 0.0f) { + tp_lvl = 0.0f; + work->state = 0; + work->stat |= 0x8; + } + for (idx = 0; idx < work->word_len; idx++) { + HuSprGrpTPLvlSet(work->spr_grp[idx], tp_lvl); + } + } break; + + default: + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } static s32 SeqInitRecord(SeqWork *work, va_list params) { - AnimData *spr_data; - s16 spr_grp; - s16 time_pos[2]; - s16 i; - s16 sprite; - s16 digit_idx; - s32 digit; - seqRecordVal = va_arg(params, int); - work->type = 0; - work->angle = 0.0f; - work->spr_grp[0] = spr_grp = HuSprGrpCreate(10); - spr_data = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 9))); - sprite = HuSprCreate(spr_data, 0, 0); - HuSprGrpMemberSet(spr_grp, 0, sprite); - HuSprPosSet(spr_grp, 0, 0.0f, -32.0f); - spr_data = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 8))); - sprite = HuSprCreate(spr_data, 0, 0); - HuSprGrpMemberSet(spr_grp, 1, sprite); - spr_data = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 7))); - for(i=0; i<8; i++) { - sprite = HuSprCreate(spr_data, 0, 0); - HuSprGrpMemberSet(spr_grp, i+2, sprite); - } - if(omcurovl == OVL_M407 || omcurovl == OVL_M453 || omcurovl == OVL_M459 || omcurovl == OVL_M460 || omcurovl == OVL_M462 || omcurovl == OVL_M442) { - digit_idx = 0; - if(seqRecordVal > 9999) { - seqRecordVal = 9999; - } - digit = seqRecordVal/1000; - if(digit != 0) { - HuSprBankSet(spr_grp, digit_idx+2, digit); - seqRecordVal -= digit*1000; - digit_idx++; - } - - digit = seqRecordVal/100; - if(digit != 0 || digit_idx != 0) { - HuSprBankSet(spr_grp, digit_idx+2, digit); - seqRecordVal -= digit*100; - digit_idx++; - } - digit = seqRecordVal/10; - if(digit != 0 || digit_idx != 0) { - HuSprBankSet(spr_grp, digit_idx+2, digit); - seqRecordVal -= digit*10; - digit_idx++; - } - HuSprBankSet(spr_grp, digit_idx+2, seqRecordVal); - digit_idx++; - for(i=digit_idx; i<8; i++) { - HuSprAttrSet(spr_grp, i+2, HUSPR_ATTR_DISPOFF); - } - HuSprPosSet(spr_grp, 1, (-((digit_idx*44)+48)/2)+24, 32.0f); - for(i=0; iparam[0] = 3; - return 1; + AnimData *spr_data; + s16 spr_grp; + s16 time_pos[2]; + s16 i; + s16 sprite; + s16 digit_idx; + s32 digit; + seqRecordVal = va_arg(params, int); + work->type = 0; + work->angle = 0.0f; + work->spr_grp[0] = spr_grp = HuSprGrpCreate(10); + spr_data = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 9))); + sprite = HuSprCreate(spr_data, 0, 0); + HuSprGrpMemberSet(spr_grp, 0, sprite); + HuSprPosSet(spr_grp, 0, 0.0f, -32.0f); + spr_data = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 8))); + sprite = HuSprCreate(spr_data, 0, 0); + HuSprGrpMemberSet(spr_grp, 1, sprite); + spr_data = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 7))); + for (i = 0; i < 8; i++) { + sprite = HuSprCreate(spr_data, 0, 0); + HuSprGrpMemberSet(spr_grp, i + 2, sprite); + } + if (omcurovl == OVL_M407 || omcurovl == OVL_M453 || omcurovl == OVL_M459 || omcurovl == OVL_M460 || omcurovl == OVL_M462 + || omcurovl == OVL_M442) { + digit_idx = 0; + if (seqRecordVal > 9999) { + seqRecordVal = 9999; + } + digit = seqRecordVal / 1000; + if (digit != 0) { + HuSprBankSet(spr_grp, digit_idx + 2, digit); + seqRecordVal -= digit * 1000; + digit_idx++; + } + + digit = seqRecordVal / 100; + if (digit != 0 || digit_idx != 0) { + HuSprBankSet(spr_grp, digit_idx + 2, digit); + seqRecordVal -= digit * 100; + digit_idx++; + } + digit = seqRecordVal / 10; + if (digit != 0 || digit_idx != 0) { + HuSprBankSet(spr_grp, digit_idx + 2, digit); + seqRecordVal -= digit * 10; + digit_idx++; + } + HuSprBankSet(spr_grp, digit_idx + 2, seqRecordVal); + digit_idx++; + for (i = digit_idx; i < 8; i++) { + HuSprAttrSet(spr_grp, i + 2, HUSPR_ATTR_DISPOFF); + } + HuSprPosSet(spr_grp, 1, (-((digit_idx * 44) + 48) / 2) + 24, 32.0f); + for (i = 0; i < digit_idx; i++) { + HuSprPosSet(spr_grp, i + 2, (-((digit_idx * 44) + 48) / 2) + 70 + (i * 44), 32.0f); + } + } + else { + s16 x; + digit_idx = 0; + digit = seqRecordVal / (600 * REFRESH_RATE); + if (digit != 0) { + HuSprBankSet(spr_grp, digit_idx + 2, digit); + seqRecordVal -= digit * (600 * REFRESH_RATE); + digit_idx++; + } + digit = seqRecordVal / (60 * REFRESH_RATE); + HuSprBankSet(spr_grp, digit_idx + 2, digit); + seqRecordVal -= digit * (60 * REFRESH_RATE); + digit_idx++; + HuSprBankSet(spr_grp, digit_idx + 2, 10); + time_pos[0] = digit_idx; + digit_idx++; + digit = seqRecordVal / (10 * REFRESH_RATE); + HuSprBankSet(spr_grp, digit_idx + 2, digit); + seqRecordVal -= digit * (10 * REFRESH_RATE); + digit_idx++; + digit = seqRecordVal / REFRESH_RATE; + HuSprBankSet(spr_grp, digit_idx + 2, digit); + seqRecordVal -= digit * REFRESH_RATE; + digit_idx++; + HuSprBankSet(spr_grp, digit_idx + 2, 11); + time_pos[1] = digit_idx; + digit_idx++; + if (omcurovl == OVL_M405 || omcurovl == OVL_M432 || omcurovl == OVL_M461) { + seqRecordVal = (float)seqRecordVal * (101.5 / REFRESH_RATE); + } + else { + seqRecordVal = (float)seqRecordVal * (100.0 / REFRESH_RATE); + } + digit = seqRecordVal / 10; + HuSprBankSet(spr_grp, digit_idx + 2, digit); + seqRecordVal -= digit * 10; + digit_idx++; + HuSprBankSet(spr_grp, digit_idx + 2, seqRecordVal); + digit_idx++; + for (i = digit_idx; i < 8; i++) { + HuSprAttrSet(spr_grp, i + 2, HUSPR_ATTR_DISPOFF); + } + HuSprPosSet(spr_grp, 1, (-((digit_idx * 44) + 4) / 2) + 24, 32.0f); + x = (-((digit_idx * 44) + 4) / 2) + 70; + for (i = 0; i < digit_idx; i++) { + HuSprPosSet(spr_grp, i + 2, x, 32.0f); + if (time_pos[0] == i || time_pos[1] == i) { + x += 22; + } + else { + x += 44; + } + } + } + HuSprGrpPosSet(spr_grp, HU_DISP_CENTERX, HU_DISP_CENTERY); + work->param[0] = 3; + return 1; } static s32 SeqUpdateRecord(SeqWork *work) { - s16 group; - if(_CheckFlag(FLAG_ID_MAKE(1, 12))) { - work->state = 0; - work->stat |= 0xC; - } else { - group = work->spr_grp[0]; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->stat |= 0x4; - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - if(work->time <= 10) { - HuSprGrpTPLvlSet(group, work->time/10.0); - } - if(work->time == 5) { - HuAudFXPlay(38); - } - if(work->time == 30) { - work->type = 0; - } - } - break; - - case -1: - { - float tp_lvl; - work->angle += seqSpeed*0.1f; - tp_lvl = 1.0f-work->angle; - if(tp_lvl <= 0.0f) { - tp_lvl = 0.0f; - work->state = 0; - work->stat |= 0x8; - } - HuSprGrpTPLvlSet(group, tp_lvl); - } - break; - - default: - break; - } - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s16 group; + if (_CheckFlag(FLAG_ID_MAKE(1, 12))) { + work->state = 0; + work->stat |= 0xC; + } + else { + group = work->spr_grp[0]; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->stat |= 0x4; + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + if (work->time <= 10) { + HuSprGrpTPLvlSet(group, work->time / 10.0); + } + if (work->time == 5) { + HuAudFXPlay(38); + } + if (work->time == 30) { + work->type = 0; + } + } break; + + case -1: { + float tp_lvl; + work->angle += seqSpeed * 0.1f; + tp_lvl = 1.0f - work->angle; + if (tp_lvl <= 0.0f) { + tp_lvl = 0.0f; + work->state = 0; + work->stat |= 0x8; + } + HuSprGrpTPLvlSet(group, tp_lvl); + } break; + + default: + break; + } + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } static void PauseProc(void); void MGSeqPauseInit(void) { - MGSeqPauseEnableCtrl(0); - HuWinInit(1); - pauseProcess = HuPrcCreate(PauseProc, 100, 4096, 0); - HuPrcSetStat(pauseProcess, PROCESS_STAT_PAUSE_EN|PROCESS_STAT_UPAUSE_EN); - pauseActiveF = 1; - pauseExitF = 0; - pauseWaitF = 0; + MGSeqPauseEnableCtrl(0); + HuWinInit(1); + pauseProcess = HuPrcCreate(PauseProc, 100, 4096, 0); + HuPrcSetStat(pauseProcess, PROCESS_STAT_PAUSE_EN | PROCESS_STAT_UPAUSE_EN); + pauseActiveF = 1; + pauseExitF = 0; + pauseWaitF = 0; } -#define PAUSE_WIN_X (HU_DISP_CENTERX-206) -#define PAUSE_WIN_DIST (HU_DISP_CENTERX+112) -#define PAUSE_EXIT_Y (HU_DISP_HEIGHT-80) +#define PAUSE_WIN_X (HU_DISP_CENTERX - 206) +#define PAUSE_WIN_DIST (HU_DISP_CENTERX + 112) +#define PAUSE_EXIT_Y (HU_DISP_HEIGHT - 80) static void PauseProc(void) { - s16 mg; - s16 i; - s16 j; - - s16 char_mess_map[4]; - s16 char_mess[4][4]; - s16 window[3] = { -1, -1, -1 }; - - SeqWork work; - static char *pauseStr[] = { - "ポーズ", - "PAUSE" - }; - float ratio; - - HuAudFXPlay(5); - for(i=0; i<16; i++) { - work.sprite[i] = work.spr_grp[i] = -1; - } - SeqMakeWord(&work, pauseStr[GET_LANG_IDX()], 0); - for(i=0; iwork[0] == 0) { - if(omMgIndexGet(omcurovl) == -1) { - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - object->work[0]++; - } - if(!omPauseChk() || _CheckFlag(FLAG_ID_MAKE(1, 12)) || !pauseWaitF) { - return; - } - for(i=input=0; i<4; i++) { - input |= HuPadBtnDown[i]; - } - if(input & PAD_TRIGGER_Z) { - HuAudFXPlay(3); - pauseExitF = 1; - omSysPauseCtrl(0); - omSysExitReq = 1; - mgQuitExtraF = 1; - omDelObjEx(HuPrcCurrentGet(), object); - } + s16 input; + s16 i; + mgQuitExtraF = 0; + if (object->work[0] == 0) { + if (omMgIndexGet(omcurovl) == -1) { + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + object->work[0]++; + } + if (!omPauseChk() || _CheckFlag(FLAG_ID_MAKE(1, 12)) || !pauseWaitF) { + return; + } + for (i = input = 0; i < 4; i++) { + input |= HuPadBtnDown[i]; + } + if (input & PAD_TRIGGER_Z) { + HuAudFXPlay(3); + pauseExitF = 1; + omSysPauseCtrl(0); + omSysExitReq = 1; + mgQuitExtraF = 1; + omDelObjEx(HuPrcCurrentGet(), object); + } }