From 49f11f6cc889c81a0089504b011f7f425b50c7c2 Mon Sep 17 00:00:00 2001 From: sShemet Date: Wed, 5 Nov 2025 16:24:34 +0500 Subject: [PATCH] EP: Groped chars v1.1 + char calcs calls --- 1_IS/IS_main_grouped.asm | 6 +- 2_EP/BIN/SLPS_028.25 | Bin 1812480 -> 1812480 bytes 2_EP/BUILD_LOGS/SLPS_028.25.map | 63 +++ 2_EP/BUILD_LOGS/SLPS_028.25.txt | 648 +++++++++++++++++++++++ 2_EP/EP_charCalcs.asm | 104 ++++ 2_EP/EP_charload_grouped.asm | 236 +++++++++ 2_EP/EP_main_grouped.asm | 662 +++++++++++++----------- 2_EP/EP_txtpatches.asm | 42 +- GROUPED_ALGO.txt | 20 +- Persona2-PSX-asm-sources.code-workspace | 8 + 10 files changed, 1466 insertions(+), 323 deletions(-) create mode 100644 2_EP/BUILD_LOGS/SLPS_028.25.map create mode 100644 2_EP/BUILD_LOGS/SLPS_028.25.txt create mode 100644 2_EP/EP_charCalcs.asm create mode 100644 2_EP/EP_charload_grouped.asm create mode 100644 Persona2-PSX-asm-sources.code-workspace diff --git a/1_IS/IS_main_grouped.asm b/1_IS/IS_main_grouped.asm index 9f275aa..f3330c6 100644 --- a/1_IS/IS_main_grouped.asm +++ b/1_IS/IS_main_grouped.asm @@ -189,7 +189,7 @@ TextGroupReadLoop: lui s3, 0x1f80 ori s3, 0x03f0 // Перезадаём адрес таблицы количества спрайтов для нового цикла lui t1, MyAddr //Постоянный счётчик - //TODO!!!!!: Динамическая длина строки для соединения с переменными! + lh v1, -0x0e(t1) //Загружаем количество оставшихся символов lui t2, MyAddr //Сдвиг для буфера sltiu a0, v1, 0x0B //Меньше 10 в строке? @@ -431,13 +431,13 @@ TextEnd: clear a1 PageTLoop: - // Завершающая обработка страниц + //Добавляем команду переключения текстурной страницы (SetDrawTPage) в обе страницы li a2, 0x1 // a2 = 1 addu s2, s2, a2 // Увеличиваем счетчик lui v0, 0x8000 // v0 = 80000000 lui a0, 0xff00 // a0 = ff000000 lw v1, -0x4930(s3) // Следующая свободная цепочка - lw a3, 0xa4(gp) // Некоторые параметры (почти DMA) + lw a3, 0xa4(gp) // Текстурная страница and v1, v1, s1 // v1 & 00FFFFFF or v1, v1, v0 // v1 | v0 = 80..... sw v1, 0x30(s0) // Сохраняем последний свободный адрес в параметрах DMA diff --git a/2_EP/BIN/SLPS_028.25 b/2_EP/BIN/SLPS_028.25 index 7535b7f8fd5d51e9de26ff519d61a2ea89d91201..8a230697e114775bb4294cf124654a1d2292db1e 100644 GIT binary patch delta 1902 zcmZuyOKenC82;{K+B@yEb7%*-3fejJ4veAEK`+w9O&mtl#+6}1my;=KjfyB6H)d`I zNzwF$1xpl@+Q%5N?M187LOb0H|I7Re=Nj5`mD`D-dyOq9jRs0(jIIlLM9SctmuRutgvD35odoj4WAlOg1x3CPhJ z6bd;LpKpqX?ZJvFRj&{VPN0;tP3uuu$;mWKCu|I$8iL*nKY2jsP!Tg@2+hFDJxCoh zInV7!W}-CylH=T11~$#fbZDY$4Xmyh;J3l@8?f_HBxEBN%VSTPO6}hSJn%gD$^Hq19nC?lY&^2<-W_H_rt@{fI#MTG6DSDQRosDa9c$SX z$YN;9p3ro#x0)AikYX3|!i3y+)~JaVFw$!Og>5u2IjjwM>HFY``;p1+hF#}P4Qj_c zcONq81DZDvOwVrto*K6CI4>>E+K6TyJT#mj?ci0`HJTMX*9rv|$G0>)ca|$hHOUT7 z$rT`r%v=HkbG`p(yL&feZt0r+@BY_**b!rU%`l;hgET(~T%sEv(~ZSJnjdsXCrIbr zn~*a~p0gWgr|X$x;snllQUIabf-rj%WcGEs77fbm6xWZb=$vPu;3Z)AzpEW7?RX5e zb$S(W{SVZo2^cQh>eB3ZZ^8)z17B@Eqt4eQY}}l2P|0i&8;v2Auiv&&c_AJ)Q?B4$ zQGG{AS9@7&t#Pcl*b(@0^d2?}TUFWAJ2iY910$aM1Tt<3Iao}(E>Pc~Cw4;fZA=em z#9h2UIri>i=h!W8+%~>++_K9l%tf+4M0hNQIEU$1bvYxmMdKM`np15uW0MSU#`{Z6 z*UigAMFVIc|J%dUcy7$V<%}NQQ4a4CE5DunqTTEWtpF$b{4j5#raMUVK=#}P*{e@G z59{A7isia+5_@v_v<;aaAp4mk=FJw8d_wZs7_KOOt;YfH2LDJ#>5`5aZY0+k7?Em42o482e3eObSCl?kOLGbYZaEKF^+P!!g6 ztAZBK3_OzIr2C($(prPXGFWaMy^fsySr6cSb-tdR8603nOg}(rHCySlsa;}5O&v^4 zv@;WTLv~l{&P|u`>{t>_zE&*zDfraS6#sEZ<~Y;*7m(Q+45mNiYCj@OOUt{OJn%^aJNB>A2wF^j7mB}LlEkY-7vCf%0&B<1-qTO+nOL8T=cyw-l= zHT)y2qjhk$>&t&zb1w6_T3D+Ubar3G7V$kkQL9;CFO3MC8KE)0AWN2u({!d%FI}PC zT%BeYxVnSK^{+DiXRGsYyrEz^QWUW?{#eqv-MBjbO47NN%O|7;x`ji;i6)|%NDwVV mE0H7wv4&_P+KCjgmbi{sN4UiG#0{sq#rnmgr;63}6UN_-bLiRt delta 996 zcmZvaO=whC6vzMXBbhrNW^UqC$0|5a-$cbi1D!<|gN#W7p>En;mSH9f7iv@5LS2+R zOe8})hSX<#gCfY#8HYMArerY_R0OfM6!IZ%5@>0(i$E78Ev4Jr|4nt*2S3g|=iT#t zz4Z&;`h~^LL)$?ywe;Yj8#UVgi>JqoXG_r^p7&Y5pT*Lzo45ApgFm_bg_culdq!;= z#3UB6Nf+sEtL=!B@mqHfNrk}y6W98q-roFY%cgFjSR1E|P*yP=+`v@eQTIo}Ov)*2LEuR%fyXTqFYFAyyW>~Fd{*p6DmHph zY6wg;V)(eBqxYfM0H&{kpW*)*?jPS$({3NUl(s~@SpF|Hcv+u!)S1f$2HiN$NUhUe z*HU{oaVZceUGL_9CtYL-rAD=23WLp^J8dSMIbKt-yfbmzln9UcnT1m)F3#HcXjb6! z*#yqd0?TagUQ3|E>cf`AMcM#~Wq)R2c+x^)x1{69h6!wh-r=tN=xXuGh*i(InfKw! z50HKLLpTFluyN@M@LNTxLDx-BAe))ew$Q@Mfzj3Ra32b?fSPMzxy-!P2=0}cyBbHQ z%>30P!ZK^9TG(s?o1F;OCYv_aI&o|?1vWZKtTYo?=}6SwKU6Ix@zm`-Z3c4eg95>LN`vzb7PQk-r&&uQ5Qm!Do;K*Tk ze8bMj5W0EC|9Sa|sAI}E^fP_$z8iQ+kurV?=9A)+=r5d`BgfDVdZl=W)?q2$rud9n zFfBzU;-m{8GdHCmQ4%9@k|29X4@nY9dPyJIOH$+wvXAU1X>x$P*}f?cen0>9+(dh< IaqzbBFDF4V%K!iX diff --git a/2_EP/BUILD_LOGS/SLPS_028.25.map b/2_EP/BUILD_LOGS/SLPS_028.25.map new file mode 100644 index 0000000..99ed5fb --- /dev/null +++ b/2_EP/BUILD_LOGS/SLPS_028.25.map @@ -0,0 +1,63 @@ +00000000 0 +00008009 myaddr +8001A3A8 printbigdmatext +8001B110 initcopycharchain +8001B2A8 makeshadowsmallchar +8001C0B4 storecolor +800578FC setdrawtpage +80090000 externalprint +8009001C myprintlineroutine +800900DC cputovram_scratchpad_template +8009010C _1bppto4bpp_table_template +8009015C rect_scratchpad_template +800901A0 make_sprite_size_table +800901C8 misc_init +800901CC textgroupreadloop +800901F0 readtexttobuffer +8009023C form_char_data_in_scratch +80090244 rect_cmd_init +80090268 rect_set_x +8009027C rect_set_width +80090284 pageloop +800902B8 rect_copy_scratch_to_ram +800902E4 rect_scratch_connect +80090338 cpu2vram_cmd_loop +800903A4 copy_char_data_start +800903C0 copy_char_data_loop +800903E8 set_flush_cache_cmd +800903F8 cpu2vram_dma_link +80090454 chunk_making_end +80090470 textend +8009048C pagetloop +8009051C make_char_line_in_scratch +80090538 char_data_clear +80090544 char_data_loop +80090570 chars_font_loop +80090598 char_lines_loop +800905A8 its_not_empty +80090638 not_last +80090644 divideby4 +80090644 zero_jump +80090654 spacejump +80090670 sprite_end +80090688 make_shadow +800906AC shadow_row_loop +800906B0 shadow_sprites_loop +800906C0 shadow_pixel_loop +8009071C normal_case +80090740 no_s +8009076C notshadow +80090780 returncharsinstring +8009079C ismy1bytestring +800907B8 notand1 +800907C8 getnewchar +800907CC startreading +800907E8 calcnextxcustom +80090810 japoldtext +80090818 ihavestringlength +80090830 retuncharstocity +8009084C ismy1bytecity +80090860 retuncharstocitydiv2 +8009087C ismy1bytecitydiv2 +80090898 notand1_2 + \ No newline at end of file diff --git a/2_EP/BUILD_LOGS/SLPS_028.25.txt b/2_EP/BUILD_LOGS/SLPS_028.25.txt new file mode 100644 index 0000000..91b910b --- /dev/null +++ b/2_EP/BUILD_LOGS/SLPS_028.25.txt @@ -0,0 +1,648 @@ +; 4 files included +; 889 lines +; 79 labels +; 0 equations + +; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm +; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm +; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm +; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm + +FFFFFFFF .psx ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 9 +800578FC setdrawtpage: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 12 +8001C0B4 storecolor: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 13 +8001B110 initcopycharchain: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 14 +8001B2A8 makeshadowsmallchar: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 15 +8001A3A8 printbigdmatext: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 16 +00008009 myaddr: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 18 +FFFFFFFF .open ""C:\\Users\\Sergey\\Documents\\GitHub\\Persona2-PSX-asm-sources\\2_EP\\BIN\\SLPS_028.25"",0x8000F800; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 20 +8000F800 .org 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 22 +80090000 externalprint: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 24 +80090000 lhu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 26 +80090004 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 27 +80090008 srl v1,v0,0xD ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 28 +8009000C bne v1,zero,0x8009001C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 29 +80090010 clear v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 30 +80090014 j 0x8001A3A8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 31 +80090018 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 32 +8009001C myprintlineroutine: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 34 +8009001C addiu sp,sp,-0x50 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 35 +80090020 sw ra,0x48(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 36 +80090024 sw s0,0x28(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 37 +80090028 sw s1,0x2C(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 38 +8009002C sw s2,0x30(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 39 +80090030 sw s3,0x34(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 40 +80090034 sw s4,0x38(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 41 +80090038 sw s5,0x3C(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 42 +8009003C sw s6,0x40(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 43 +80090040 sw s7,0x44(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 44 +80090044 move s6,a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 46 +80090048 move s1,a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 47 +8009004C move s2,a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 48 +80090050 andi v0,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 52 +80090054 addiu s6,s6,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 53 +80090058 lui s3,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 54 +8009005C sh v0,-0x10(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 55 +80090060 sh v0,-0xE(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 56 +80090064 lui t0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 58 +80090068 ori t0,t0,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 59 +8009006C sw s0,0x28(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 61 +80090070 andi s0,a3,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 62 +80090074 move a0,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 63 +80090078 lui a3,-0x7FF8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 64 +8009007C lui a2,-0x100 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 65 +80090080 addiu t1,a3,-0x31A8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 68 +80090084 lw v1,0x0(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 69 +80090088 lbu a1,0x60(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 70 +8009008C lui v0,-0x8000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 71 +80090090 and a2,v1,a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 73 +80090094 andi a1,a1,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 74 +80090098 and v1,v1,t0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 75 +8009009C or s4,v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 76 +800900A0 lw v0,0x4(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 77 +800900A4 lw v1,0x0(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 78 +800900A8 addiu v0,v0,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 79 +800900AC and v1,v1,t0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 80 +800900B0 or a2,a2,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 81 +800900B4 sw v0,0x4(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 82 +800900B8 jal 0x8001C0B4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 83 +800900BC sw a2,0x0(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 84 +800900C0 move a0,s4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 86 +800900C4 sll a1,s1,0x10 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 87 +800900C8 sra a1,a1,0x10 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 88 +800900CC sll a2,s2,0x10 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 89 +800900D0 sra a2,a2,0x10 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 90 +800900D4 jal 0x8001B110 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 91 +800900D8 move a3,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 92 +800900DC cputovram_scratchpad_template: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 94 +800900DC lui a3,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 96 +800900E0 ori a3,a3,0x348 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 97 +800900E4 lui a1,0xF00 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 99 +800900E8 sw a1,0x0(a3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 100 +800900EC lui a0,-0x6000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 102 +800900F0 sw a0,0x4(a3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 103 +800900F4 lui v0,0x1F0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 105 +800900F8 ori v0,0x130 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 106 +800900FC sw v0,0x8(a3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 107 +80090100 lui v0,0xC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 109 +80090104 ori v0,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 110 +80090108 sw v0,0xC(a3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 111 +8009010C _1bppto4bpp_table_template: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 113 +8009010C lui t8,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 115 +80090110 ori t8,t8,0x390 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 116 +80090114 lui t7,-0x7FFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 117 +80090118 ori t7,t7,0x3E8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 118 +8009011C lw t5,0x0(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 119 +80090120 lw t6,0x4(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 120 +80090124 sw t5,0x0(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 121 +80090128 sw t6,0x4(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 122 +8009012C lw t5,0x8(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 123 +80090130 lw t6,0xC(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 124 +80090134 sw t5,0x8(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 125 +80090138 sw t6,0xC(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 126 +8009013C lw t5,0x10(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 127 +80090140 lw t6,0x14(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 128 +80090144 sw t5,0x10(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 129 +80090148 sw t6,0x14(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 130 +8009014C lw t5,0x18(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 131 +80090150 lw t6,0x1C(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 132 +80090154 sw t5,0x18(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 133 +80090158 sw t6,0x1C(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 134 +8009015C rect_scratchpad_template: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 136 +8009015C lui s3,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 138 +80090160 ori s3,0x3D0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 139 +80090164 lui v0,0x400 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 140 +80090168 sw v0,0x0(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 141 +8009016C lui v0,0x6480 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 142 +80090170 ori v0,-0x7F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 143 +80090174 sw v0,0x4(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 144 +80090178 ori v0,r0,-0xF40 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 145 +8009017C sh v0,0xC(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 146 +80090180 lhu v1,0x9A(gp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 147 +80090184 ori v0,r0,0x0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 149 +80090188 sw v0,0x8(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 150 +8009018C sh s2,0xA(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 151 +80090190 lui v0,0xC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 153 +80090194 ori v0,0x8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 154 +80090198 sw v0,0x10(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 155 +8009019C sh v1,0xE(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 156 +800901A0 make_sprite_size_table: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 158 +800901A0 lui s3,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 159 +800901A4 ori s3,0x3F0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 160 +800901A8 lui v0,0x403 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 161 +800901AC ori v0,0x201 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 162 +800901B0 sw v0,0x0(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 163 +800901B4 lui v1,0x706 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 164 +800901B8 ori v1,0x504 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 165 +800901BC sw v1,0x4(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 166 +800901C0 ori v0,r0,0x807 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 167 +800901C4 sh v0,0x8(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 168 +800901C8 misc_init: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 170 +800901C8 move t6,s1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 171 +800901CC textgroupreadloop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 174 +800901CC lui s3,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 179 +800901D0 ori s3,0x3F0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 180 +800901D4 lui t1,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 181 +800901D8 lh v1,-0xE(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 183 +800901DC lui t2,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 184 +800901E0 sltiu a0,v1,0xB ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 185 +800901E4 bne a0,zero,0x800901F0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 186 +800901E8 clear s2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 187 +800901EC ori v1,r0,0xA ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 188 +800901F0 readtexttobuffer: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 190 +800901F0 lbu a0,0x0(s6) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 191 +800901F4 addiu s6,s6,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 192 +800901F8 addiu v1,v1,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 193 +800901FC sb a0,-0xC(t2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 194 +80090200 addiu s2,s2,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 195 +80090204 lh v0,-0xE(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 196 +80090208 addiu t2,t2,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 197 +8009020C addiu v0,v0,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 198 +80090210 bne v1,zero,0x800901F0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 199 +80090214 sh v0,-0xE(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 200 +80090218 ori a0,r0,0x0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 202 +8009021C sb a0,-0xC(t2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 203 +80090220 addu s3,s3,s2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 205 +80090224 addiu s3,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 206 +80090228 lbu a1,0x0(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 207 +8009022C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 208 +80090230 move t5,a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 209 +80090234 lui t3,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 211 +80090238 ori t3,t3,0x1C0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 212 +8009023C form_char_data_in_scratch: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 214 +8009023C jal 0x8009051C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 215 +80090240 move a0,s2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 216 +80090244 rect_cmd_init: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 219 +80090244 lui s3,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 221 +80090248 ori s3,0x3D0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 222 +8009024C lui s1,-0x7FF8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 224 +80090250 lui s0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 226 +80090254 ori s0,s0,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 227 +80090258 lui s7,-0x8000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 228 +8009025C lui t2,-0x100 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 230 +80090260 move t4,s4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 231 +80090264 move t1,s4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 232 +80090268 rect_set_x: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 234 +80090268 sh t6,0x8(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 235 +8009026C sll v0,s2,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 237 +80090270 addu v0,s2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 238 +80090274 sll v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 239 +80090278 addu t6,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 240 +8009027C rect_set_width: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 241 +8009027C sll v0,t5,0x3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 242 +80090280 sh v0,0x10(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 243 +80090284 pageloop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 245 +80090284 addiu s5,s1,-0x3198 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 249 +80090288 lw v0,0x0(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 254 +8009028C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 255 +80090290 and a0,v0,t2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 256 +80090294 and v0,v0,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 257 +80090298 or a1,v0,s7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 258 +8009029C lw v0,0x4(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 259 +800902A0 lw v1,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 260 +800902A4 addiu v0,v0,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 261 +800902A8 and v1,v1,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 262 +800902AC or a0,a0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 263 +800902B0 sw v0,0x4(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 264 +800902B4 sw a0,0x0(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 265 +800902B8 rect_copy_scratch_to_ram: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 267 +800902B8 lw t8,0x0(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 268 +800902BC lw t7,0x4(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 269 +800902C0 sw t8,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 270 +800902C4 sw t7,0x4(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 271 +800902C8 lw a3,0x8(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 272 +800902CC lw t7,0xC(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 273 +800902D0 sw a3,0x8(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 274 +800902D4 sw t7,0xC(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 275 +800902D8 lw t8,0x10(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 276 +800902DC nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 277 +800902E0 sw t8,0x10(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 278 +800902E4 rect_scratch_connect: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 281 +800902E4 lw v1,0x18(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 282 +800902E8 lw v0,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 283 +800902EC lw v1,0x0(v1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 284 +800902F0 and v0,v0,t2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 285 +800902F4 and v1,v1,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 286 +800902F8 or v0,v0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 287 +800902FC sw v0,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 288 +80090300 lw a0,0x18(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 290 +80090304 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 291 +80090308 lw v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 292 +8009030C and v1,a1,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 293 +80090310 and v0,v0,t2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 294 +80090314 or v0,v0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 295 +80090318 sw v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 296 +8009031C sw a1,0x18(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 297 +80090320 lhu v0,0x4(t4) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 299 +80090324 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 300 +80090328 bne v0,zero,0x80090338 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 301 +8009032C clear s8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 302 +80090330 sw a1,0x28(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 304 +80090334 sw a3,0xC(t4) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 305 +80090338 cpu2vram_cmd_loop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 308 +80090338 addiu s5,s1,-0x31A8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 313 +8009033C lw v0,0x0(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 317 +80090340 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 318 +80090344 and a0,v0,t2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 319 +80090348 and v0,v0,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 320 +8009034C or a3,v0,s7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 321 +80090350 move a2,a3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 322 +80090354 lw v0,0x4(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 323 +80090358 lw v1,0x0(a3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 324 +8009035C addiu v0,v0,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 325 +80090360 and v1,v1,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 326 +80090364 or a0,a0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 327 +80090368 sw v0,0x4(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 328 +8009036C sw a0,0x0(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 329 +80090370 lui a1,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 333 +80090374 ori a1,a1,0x348 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 334 +80090378 lw t8,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 335 +8009037C lw t7,0x4(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 336 +80090380 sw t8,0x0(a2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 337 +80090384 sw t7,0x4(a2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 338 +80090388 lw t8,0x8(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 339 +8009038C lw t7,0xC(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 340 +80090390 sw t8,0x8(a2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 341 +80090394 sw t7,0xC(a2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 342 +80090398 sll v1,s8,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 344 +8009039C addiu v0,v1,0x130 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 345 +800903A0 sh v0,0x8(a2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 346 +800903A4 copy_char_data_start: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 348 +800903A4 lui t3,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 349 +800903A8 ori t3,t3,0x1C0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 350 +800903AC addiu a2,0x10 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 352 +800903B0 clear v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 353 +800903B4 sll v1,t5,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 355 +800903B8 sll a1,s8,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 356 +800903BC addu a1,t3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 357 +800903C0 copy_char_data_loop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 359 +800903C0 lw t7,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 360 +800903C4 addu a1,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 361 +800903C8 sw t7,0x0(a2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 362 +800903CC addiu a2,0x4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 364 +800903D0 addiu v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 365 +800903D4 ori r1,r0,0xC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 366 +800903D8 bne v0,r1,0x800903C0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 366 +800903DC nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 367 +800903E0 bne s8,zero,0x800903F8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 369 +800903E4 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 370 +800903E8 set_flush_cache_cmd: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 372 +800903E8 ori t8,r0,0x10 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 373 +800903EC sb t8,-0x3D(a2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 374 +800903F0 lui t8,0x100 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 375 +800903F4 sw t8,0x0(a2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 376 +800903F8 cpu2vram_dma_link: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 378 +800903F8 lw v1,0x18(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 380 +800903FC lw v0,0x0(a3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 381 +80090400 lw v1,0x0(v1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 382 +80090404 and v0,v0,t2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 383 +80090408 and v1,v1,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 384 +8009040C or v0,v0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 385 +80090410 sw v0,0x0(a3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 386 +80090414 lw a0,0x18(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 389 +80090418 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 390 +8009041C lw v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 391 +80090420 and v1,a3,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 392 +80090424 and v0,v0,t2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 393 +80090428 or v0,v0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 394 +8009042C sw v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 395 +80090430 sw a3,0x18(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 396 +80090434 addiu s8,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 399 +80090438 bne s8,t5,0x80090338 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 400 +8009043C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 401 +80090440 addiu t1,t1,0x4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 403 +80090444 addiu v0,t4,0x8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 404 +80090448 sltu v0,t1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 405 +8009044C bne v0,zero,0x80090284 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 406 +80090450 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 407 +80090454 chunk_making_end: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 409 +80090454 lhu v0,0x4(s4) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 411 +80090458 lui t3,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 412 +8009045C addiu v0,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 413 +80090460 lhu v1,-0xE(t3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 414 +80090464 sh v0,0x4(s4) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 415 +80090468 bne v1,zero,0x800901CC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 417 +8009046C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 419 +80090470 textend: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 422 +80090470 clear s2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 423 +80090474 lui s3,-0x7FF8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 424 +80090478 addiu s5,s3,-0x3198 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 425 +8009047C lui s1,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 426 +80090480 ori s1,s1,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 427 +80090484 move s0,s4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 428 +80090488 clear a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 429 +8009048C pagetloop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 431 +8009048C ori a2,r0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 433 +80090490 addu s2,s2,a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 434 +80090494 lui v0,-0x8000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 436 +80090498 lui a0,-0x100 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 437 +8009049C lw v1,0x0(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 439 +800904A0 lw a3,0x9C(gp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 440 +800904A4 and v1,v1,s1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 441 +800904A8 or v1,v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 442 +800904AC sw v1,0x30(s0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 443 +800904B0 lw v0,0x0(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 446 +800904B4 lw v1,0x0(v1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 447 +800904B8 and v0,v0,a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 448 +800904BC and v1,v1,s1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 449 +800904C0 lw a0,0x4(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 450 +800904C4 or v0,v0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 451 +800904C8 sw v0,0x0(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 452 +800904CC addiu a0,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 453 +800904D0 sw a0,0x4(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 454 +800904D4 lw a0,0x30(s0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 455 +800904D8 jal 0x800578FC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 456 +800904DC addiu s0,s0,0x4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 457 +800904E0 sltiu v0,s2,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 458 +800904E4 bne v0,zero,0x8009048C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 459 +800904E8 clear a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 460 +800904EC move v0,s5 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 462 +800904F0 lw ra,0x48(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 465 +800904F4 lw s7,0x44(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 466 +800904F8 lw s6,0x40(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 467 +800904FC lw s5,0x3C(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 468 +80090500 lw s4,0x38(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 469 +80090504 lw s3,0x34(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 470 +80090508 lw s2,0x30(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 471 +8009050C lw s1,0x2C(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 472 +80090510 lw s0,0x28(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 473 +80090514 jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 475 +80090518 addiu sp,sp,0x50 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 476 +8009051C make_char_line_in_scratch: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 4 +8009051C addiu sp,sp,-0x18 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 6 +80090520 sw ra,0x10(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 7 +80090524 sw t5,0x14(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 8 +80090528 move t5,a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 9 +8009052C sll s3,a1,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 11 +80090530 lui t7,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 12 +80090534 addiu t7,-0xC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 13 +80090538 char_data_clear: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 15 +80090538 move a1,t3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 16 +8009053C addiu a0,a1,0x184 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 17 +80090540 ori v0,r0,0x0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 18 +80090544 char_data_loop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 19 +80090544 sw v0,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 20 +80090548 addiu a1,0x4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 21 +8009054C bne a1,a0,0x80090544 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 22 +80090550 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 23 +80090554 move s1,t3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 25 +80090558 ori a2,r0,0x0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 27 +8009055C lbu v0,0x0(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 28 +80090560 lbu t2,0xA4(gp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 29 +80090564 addiu t7,t7,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 30 +80090568 lui a3,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 32 +8009056C ori a3,a3,0x390 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 33 +80090570 chars_font_loop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 36 +80090570 addiu v0,-0x20 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 37 +80090574 beq v0,zero,0x80090654 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 39 +80090578 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 40 +8009057C lui v1,-0x7FE1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 42 +80090580 ori v1,v1,-0x5600 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 43 +80090584 sll t0,v0,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 44 +80090588 sll v0,v0,0x3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 45 +8009058C addu v0,v0,t0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 46 +80090590 addu t1,v0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 47 +80090594 clear t3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 49 +80090598 char_lines_loop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 51 +80090598 lbu v1,0x0(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 52 +8009059C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 53 +800905A0 beq v1,zero,0x80090644 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 54 +800905A4 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 55 +800905A8 its_not_empty: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 57 +800905A8 andi a0,v1,0xF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 59 +800905AC sll a0,a0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 60 +800905B0 addu a0,a0,a3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 61 +800905B4 lhu a0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 62 +800905B8 srl a1,v1,0x4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 64 +800905BC andi a1,a1,0xF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 65 +800905C0 sll a1,a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 66 +800905C4 addu a1,a1,a3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 67 +800905C8 lhu a1,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 68 +800905CC nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 69 +800905D0 sll a1,0x10 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 71 +800905D4 or a0,a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 72 +800905D8 mult a0,t2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 73 +800905DC sll a1,a2,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 78 +800905E0 addu a1,a1,a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 79 +800905E4 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 82 +800905E8 mflo t4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 83 +800905EC mult t3,s3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 86 +800905F0 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 87 +800905F4 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 88 +800905F8 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 89 +800905FC mflo a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 90 +80090600 addu a0,a0,a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 93 +80090604 addu a0,a0,s1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 94 +80090608 andi v0,t4,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 96 +8009060C sb v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 97 +80090610 sra v0,t4,0x8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 99 +80090614 andi v0,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 100 +80090618 sb v0,0x1(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 101 +8009061C sra v0,t4,0x10 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 103 +80090620 andi v0,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 104 +80090624 sb v0,0x2(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 105 +80090628 addiu v0,t5,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 107 +8009062C bne a2,v0,0x80090638 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 108 +80090630 andi v1,t5,0x3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 109 +80090634 beq v1,zero,0x80090644 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 111 +80090638 not_last: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 113 +80090638 sra v0,t4,0x18 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 114 +8009063C andi v0,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 115 +80090640 sb v0,0x3(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 116 +80090644 divideby4: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 118 +80090644 zero_jump: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 120 +80090644 addiu t3,t3,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 121 +80090648 ori v0,r0,0xC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 122 +8009064C bne t3,v0,0x80090598 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 123 +80090650 addiu t1,t1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 124 +80090654 spacejump: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 126 +80090654 addiu a2,a2,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 127 +80090658 lbu v0,0x0(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 128 +8009065C addiu t7,t7,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 129 +80090660 beq v0,zero,0x80090670 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 131 +80090664 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 132 +80090668 bne a2,t5,0x80090570 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 134 +8009066C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 135 +80090670 sprite_end: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 137 +80090670 lbu v1,0xA5(gp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 138 +80090674 ori v0,r0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 139 +80090678 bne v1,v0,0x8009076C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 140 +8009067C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 141 +80090680 move a0,s1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 143 +80090684 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 144 +80090688 make_shadow: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 147 +80090688 move a1,s3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 148 +8009068C sll a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 149 +80090690 sll v0,s3,0x3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 150 +80090694 addu v0,a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 151 +80090698 addu a3,a0,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 153 +8009069C addu a0,a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 154 +800906A0 lbu t1,0xA4(gp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 156 +800906A4 ori t2,r0,0xF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 157 +800906A8 addiu t1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 158 +800906AC shadow_row_loop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 161 +800906AC clear t5 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 163 +800906B0 shadow_sprites_loop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 166 +800906B0 addu t7,a3,t5 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 168 +800906B4 lw t0,0x0(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 169 +800906B8 clear a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 170 +800906BC ori a1,r0,0x4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 171 +800906C0 shadow_pixel_loop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 174 +800906C0 move a1,a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 175 +800906C4 addiu a1,a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 176 +800906C8 sll a1,a1,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 177 +800906CC sll v0,a2,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 179 +800906D0 sllv v0,t2,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 180 +800906D4 and v0,t0,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 181 +800906D8 beq v0,zero,0x80090740 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 182 +800906DC nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 183 +800906E0 ori v0,r0,0x7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 186 +800906E4 bne a2,v0,0x8009071C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 187 +800906E8 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 188 +800906EC addu t8,t7,s3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 191 +800906F0 addiu t8,t8,0x4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 192 +800906F4 lw v1,0x0(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 193 +800906F8 ori v0,r0,0xF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 194 +800906FC and v0,v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 195 +80090700 bne v0,zero,0x80090740 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 196 +80090704 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 197 +80090708 move v0,t1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 198 +8009070C or v0,v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 199 +80090710 sw v0,0x0(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 200 +80090714 b 0x80090740 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 201 +80090718 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 202 +8009071C normal_case: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 204 +8009071C addu t8,t7,s3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 205 +80090720 lw v1,0x0(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 206 +80090724 sllv v0,t2,a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 207 +80090728 and v0,v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 208 +8009072C bne v0,zero,0x80090740 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 209 +80090730 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 210 +80090734 sllv v0,t1,a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 211 +80090738 or v0,v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 212 +8009073C sw v0,0x0(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 213 +80090740 no_s: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 215 +80090740 addiu a2,a2,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 216 +80090744 sltiu v0,a2,0x8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 217 +80090748 bne v0,zero,0x800906C0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 218 +8009074C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 219 +80090750 addiu t5,t5,0x4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 221 +80090754 bne t5,s3,0x800906B0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 222 +80090758 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 223 +8009075C subu a3,s3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 226 +80090760 sltu v0,a3,a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 227 +80090764 beq v0,zero,0x800906AC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 228 +80090768 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 229 +8009076C notshadow: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 231 +8009076C lw t5,0x14(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 232 +80090770 lw ra,0x10(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 233 +80090774 move v0,s1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 234 +80090778 jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 235 +8009077C addiu sp,sp,0x18 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 236 +80090780 returncharsinstring: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 1 +80090780 lhu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 4 +80090784 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 5 +80090788 srl v0,v0,0xD ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 6 +8009078C bne v0,zero,0x8009079C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 7 +80090790 clear v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 8 +80090794 j 0x800907CC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 11 +80090798 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 12 +8009079C ismy1bytestring: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 13 +8009079C lhu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 14 +800907A0 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 15 +800907A4 andi v0,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 16 +800907A8 andi v1,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 18 +800907AC beq v1,zero,0x800907B8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 19 +800907B0 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 20 +800907B4 addiu v0,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 21 +800907B8 notand1: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 23 +800907B8 sra v0,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 24 +800907BC addiu v0,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 25 +800907C0 jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 26 +800907C4 move v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 27 +800907C8 getnewchar: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 29 +800907C8 addiu v1,v1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 30 +800907CC startreading: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 31 +800907CC lhu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 32 +800907D0 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 33 +800907D4 sltiu v0,v0,0x1000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 34 +800907D8 bne v0,zero,0x800907C8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 35 +800907DC addiu a0,a0,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 36 +800907E0 jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 37 +800907E4 move v0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 38 +800907E8 calcnextxcustom: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 41 +800907E8 addiu sp,sp,-0x18 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 42 +800907EC sw ra,0x10(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 43 +800907F0 lhu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 45 +800907F4 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 46 +800907F8 andi v1,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 47 +800907FC srl v0,v0,0xD ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 48 +80090800 beq v0,zero,0x80090810 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 49 +80090804 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 50 +80090808 j 0x80090818 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 51 +8009080C move v0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 52 +80090810 japoldtext: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 53 +80090810 jal 0x80090780 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 54 +80090814 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 55 +80090818 ihavestringlength: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 56 +80090818 sll v1,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 57 +8009081C addu v1,v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 58 +80090820 lw ra,0x10(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 59 +80090824 sll v0,v1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 60 +80090828 jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 61 +8009082C addiu sp,sp,0x18 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 62 +80090830 retuncharstocity: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 64 +80090830 lhu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 65 +80090834 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 66 +80090838 srl v0,v0,0xD ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 67 +8009083C bne v0,zero,0x8009084C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 68 +80090840 clear v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 69 +80090844 j 0x800907CC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 71 +80090848 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 72 +8009084C ismy1bytecity: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 73 +8009084C lhu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 74 +80090850 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 75 +80090854 andi v0,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 76 +80090858 jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 77 +8009085C move v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 78 +80090860 retuncharstocitydiv2: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 81 +80090860 lhu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 82 +80090864 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 83 +80090868 srl v0,v0,0xD ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 84 +8009086C bne v0,zero,0x8009087C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 85 +80090870 clear v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 86 +80090874 j 0x800907CC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 88 +80090878 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 89 +8009087C ismy1bytecitydiv2: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 90 +8009087C lhu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 91 +80090880 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 92 +80090884 andi v0,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 93 +80090888 andi v1,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 95 +8009088C beq v1,zero,0x80090898 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 96 +80090890 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 97 +80090894 addiu v0,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 98 +80090898 notand1_2: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 100 +80090898 sra v0,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 101 +8009089C jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 103 +800908A0 move v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 104 +800908A4 .close ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 481 +FFFFFFFF .open ""C:\\Users\\Sergey\\Documents\\GitHub\\Persona2-PSX-asm-sources\\2_EP\\BIN\\SLPS_028.25"",0x8000F800; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 7 +8000F800 .org 0x8001B5B8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 10 +8001B5B8 ori a1,r0,0x0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 11 +8001B5BC .org 0x8001D0C4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 32 +8001D0C4 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 33 +8001D0C8 .org 0x8001D138 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 34 +8001D138 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 35 +8001D13C .org 0x8001DF7C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 37 +8001DF7C jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 38 +8001DF80 .org 0x8001DFFC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 39 +8001DFFC jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 40 +8001E000 .org 0x8001D1DC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 43 +8001D1DC jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 44 +8001D1E0 .org 0x8001BEE0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 47 +8001BEE0 j 0x80090780 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 48 +8001BEE4 clear v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 49 +8001BEE8 .org 0x8001BF08 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 53 +8001BF08 j 0x800907E8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 56 +8001BF0C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 57 +8001BF10 .close ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 59 diff --git a/2_EP/EP_charCalcs.asm b/2_EP/EP_charCalcs.asm new file mode 100644 index 0000000..5da3cd9 --- /dev/null +++ b/2_EP/EP_charCalcs.asm @@ -0,0 +1,104 @@ +ReturnCharsInString: + + + lhu v0,0x0(a0) + nop + srl v0,v0,0xD ;;;;Check 13th bit (1byte system !!!) + bne v0,zero,IsMy1byteString + clear v1 + ;v1 = charCount + + j StartReading + nop +IsMy1byteString: + lhu v0,0x0(a0) + nop + andi v0,v0,0xff ;Clear from cmd flag + + andi v1,v0,0x1 + beq v1,zero,notAnd1 + nop + addiu v0,v0,0x1 + +notAnd1: + sra v0,v0,1 ;v0/2 (bytes Pairs) + addiu v0,v0,1 ;v0 += = header 2 bytes + jr ra + move v1,v0 ;return v0,v1 - charsNum + +GetNewChar: + addiu v1,v1,1 +StartReading: + lhu v0,0x0(a0) ;a0 - curTextAddr + nop + sltiu v0,v0,0x1000 + bne v0,zero,GetNewChar ;if currentChar<1000 - goto next addr+2b + addiu a0,a0,2 + jr ra + move v0,v1 ;return v0,v1 - charsNum + + +calcNextXCustom: + addiu sp,sp,-0x18 + sw ra,0x10(sp) + + lhu v0,0x0(a0) + nop + andi v1,v0,0xff ;Clear from cmd flag + srl v0,v0,0xD ;;;;Check 13th bit (1byte system !!!) + beq v0,zero,JapOldText ;if bit 0d = 0 - OldTypeText + nop + j IHaveStringLength + move v0,v1 ;double char count +JapOldText: + jal ReturnCharsInString + nop +IHaveStringLength: + sll v1,v0,0x1 + addu v1,v1,v0 + lw ra,0x10(sp) + sll v0,v1,0x1 ;*charcount * 6 pix + jr ra + addiu sp,sp,0x18 + +RetunCharsToCity: + lhu v0,0x0(a0) + nop + srl v0,v0,0xD ;;;;Check 13th bit (1byte system !!!) + bne v0,zero,IsMy1byteCity + clear v1 ;v1 = charCount + + j StartReading + nop +IsMy1byteCity: + lhu v0,0x0(a0) + nop + andi v0,v0,0xff ;Clear from cmd flag + jr ra + move v1,v0 ;return v0,v1 - charsNum + + +RetunCharsToCityDiv2: + lhu v0,0x0(a0) + nop + srl v0,v0,0xD ;;;;Check 13th bit (1byte system !!!) + bne v0,zero,IsMy1byteCityDiv2 + clear v1 ;v1 = charCount + + j StartReading + nop +IsMy1byteCityDiv2: + lhu v0,0x0(a0) + nop + andi v0,v0,0xff ;Clear from cmd flag + + andi v1,v0,0x1 + beq v1,zero,notAnd1_2 + nop + addiu v0,v0,0x1 + +notAnd1_2: + sra v0,v0,1 ;v0/2 (bytes Pairs) + ; addiu v0,v0,1 ;v0 += = header 2 bytes + jr ra + move v1,v0 ;return v0,v1 - charsNum \ No newline at end of file diff --git a/2_EP/EP_charload_grouped.asm b/2_EP/EP_charload_grouped.asm new file mode 100644 index 0000000..c22390a --- /dev/null +++ b/2_EP/EP_charload_grouped.asm @@ -0,0 +1,236 @@ + +// LOADING CHAR FROM CUSTOM FONT FOR ALL LINE + +make_char_line_in_scratch: + + addiu sp, sp,-0x18 + sw ra, 0x10(sp) + sw t5, 0x14(sp) + move t5, a0 //char num + + sll s3, a1, 0x2 //width in bytes (sprite count * 4) + lui t7, MyAddr + addiu t7, -0x0c //Text buffer pointer + +char_data_clear: + move a1, t3 //dest address + addiu a0, a1, 0x184 + li v0, 0 +char_data_loop: + sw v0, 0x0(a1) + addiu a1, 0x4 + bne a1, a0, char_data_loop + nop + + move s1, t3 // destination address reset + + li a2, 0 // char index counter + lbu v0, 0x0(t7) + lbu t2, 0xa4(gp) //load color + addiu t7, t7, 0x01 + + lui a3, 0x1f80 + ori a3, a3,0x390 // set scratch convert addr r7 = 1f8002e0 + + +chars_font_loop: + addiu v0, -0x20 //shift unprintable + + beq v0, zero, spaceJump //If space (0x20 ASCII) -- bypass char + nop + + lui v1, 0x801f // //load font addr to r3 (801ef000 + BA00) + ori v1, v1, 0xaa00 // ==== 801faa00 + sll t0, v0, 2 // t0 = v0 * 4 + sll v0, v0, 3 // v0 = v0 * 8 + addu v0, v0, t0 // v0 = (v0*8) + (v0*4) = v0*12 + addu t1, v0, v1 //t1 = char addr // t1 = r2(offs) + r3 (start) + + clear t3 //new lines counter + + char_lines_loop: + lbu v1, 0x0(t1) //load byte of char font to r3 + nop + beq v1, zero, zero_jump + nop + + its_not_empty: + //right + andi a0, v1, 0xf // a0 = r3 & 0f - cutting left semibyte + sll a0, a0, 0x1 // a0 << 1 + addu a0, a0, a3 // a0 += bit table + lhu a0, 0x0(a0) // в a0 - правый полусимвол в 4 бит + //left + srl a1, v1, 0x4 // r3 >> 4 + andi a1, a1, 0xf // r2 = r3 & 0f + sll a1, a1, 0x1 // r2 << 1 + addu a1, a1, a3 // r2 = r2 + to4bitConvertTableAddr (r7) + lhu a1, 0x0(a1)//>DAT_1f8002e0 в a1 - левый полусимвол в 4 бит + nop + //combine & color + sll a1, 0x10 + or a0, a1 + mult a0, t2 //set color - сохраняем в регистре умножения готовые 4 байта + //line dest addr calc - + // s1(dest addr) + ((current line * (charcount * 4) + charIndex * 3)) + + //calc char index * 3 + sll a1, a2, 1 + addu a1, a1, a2 + + //getting final char line word... + nop + mflo t4 // t4 = final char + + //multiplying current line * width + mult t3, s3 + nop + nop + nop + mflo a0 + + //getting final address + addu a0, a0, a1 // a0 = current_line * width_in_bytes + charindex * 3 + addu a0, a0, s1 // s1 = destination write address + + andi v0, t4, 0xFF // + sb v0, 0x00(a0) // + + sra v0, t4, 0x08 // + andi v0, v0, 0xFF // + sb v0, 0x01(a0) // Byte by byte char data save in LITTLE ENDIAN + + sra v0, t4, 0x10 // cause we are not fitting to memory words + andi v0, v0, 0xFF // + sb v0, 0x02(a0) // + + addiu v0, t5, -0x1 + bne a2, v0, not_last + andi v1, t5, 0x3 + + beq v1, zero, divideby4 + +not_last: + sra v0, t4, 0x18 // Байт рисуется только если длина не кратна 4 + andi v0, v0, 0xFF // и это не последний байт + sb v0, 0x03(a0) // (иначе происходит наложение байта на следующую строку) + +divideby4: + + zero_jump: + addiu t3, t3, 0x01 //inc line counter + li v0, 0x0C //line max count + bne t3, v0, char_lines_loop //comparing... + addiu t1, t1, 0x01 //shift char font line address + +spaceJump: + addiu a2, a2, 0x1 // inc char index + lbu v0, 0x0(t7) + addiu t7, t7, 0x01 + + beq v0, zero, sprite_end //if we read 0 - end + nop + + bne a2, t5, chars_font_loop // if r3 counter<>0 goto loop + nop + +sprite_end: + lbu v1, 0xa5(gp) // >DAT_8007b23d_textMode load curText Shadow? + li v0, 0x1 + bne v1, v0, NotShadow //Shadow character check + nop + + move a0, s1 + nop + + +make_shadow: //s3 - line width in bytes, a0 - data start + move a1, s3 // a1 = ширина + sll a1, 0x1 //a1 = смещение на 3 строку (ширина * 2) + sll v0, s3, 3 //v0 = ширина строки * 8 + addu v0, a1 //v0 = ширина строки * 10 + + addu a3, a0, v0 // a3 = указатель на 10 строку + addu a0, a1 // a0 = Указатель на 3 строку + + lbu t1, 0xa4(gp) // v0 = базовый цвет символа + li t2, 0xf // t2 = маска 0xF для работы с 4 битами пикселя + addiu t1, 0x1 // t1 = цвет тени (базовый цвет + 1) + +// Основной цикл по строкам (снизу вверх) +shadow_row_loop: + + clear t5 //clear sprite shift counter + + //Цикл спрайтов в строке + shadow_sprites_loop: + + addu t7, a3, t5 //Текущий адрес спрайта = Адрес текущей строки + смещение спрайта + lw t0, 0x0(t7) // t0 = текущая полоса спрайта + clear a2 // a2 = счётчик пикселей в строке (X координата) + li a1, 0x4 // a1 = сдвиг 1 пиксель вправо (4 бита) + + // Внутренний цикл по пикселям в строке + shadow_pixel_loop: + move a1, a2 // a1 = текущий X пиксель + addiu a1, a1, 0x1 // +1 пиксель вправо + sll a1, a1, 0x2 // ×4 (перевод в биты) + + sll v0, a2, 0x2 // v0 = смещение исходного пикселя (X * 4) + sllv v0, t2, v0 // v0 = маска для исходного пикселя + and v0, t0, v0 // проверяем есть ли исходный пиксель + beq v0, zero, no_s // если пикселя нет, пропускаем + nop + + //Проверяем граничный случай (8-й пиксель) + li v0, 0x7 // последний пиксель (X = 7) + bne a2, v0, normal_case // если не 8-й пиксель - обычная обработка + nop + // Граничный случай: 8-й пиксель исходного спрайта + // Тень будет в позиции a1 = 32 (8 × 4) - это следующий word! + addu t8, t7, s3 // адрес следующей строки + addiu t8, t8, 0x4 // переходим к следующему word + lw v1, 0x0(t8) // загружаем следующий word + li v0, 0xF // маска для ПЕРВОГО пикселя в новом word + and v0, v1, v0 // проверяем занятость (биты 0-3 нового word) + bne v0, zero, no_s // если занято - пропускаем + nop + move v0, t1 // цвет тени (в биты 0-3 нового word) + or v0, v1, v0 // добавляем тень + sw v0, 0x0(t8) // сохраняем + b no_s + nop + + normal_case: + addu t8, t7, s3 // этот же word в следующей строке + lw v1, 0x0(t8) // следующая строка + sllv v0, t2, a1 // маска для пикселя тени + and v0, v1, v0 // проверяем занятость + bne v0, zero, no_s // если занято - пропускаем + nop + sllv v0, t1, a1 // цвет тени + or v0, v1, v0 // добавляем тень + sw v0, 0x0(t8) // сохраняем + + no_s: + addiu a2, a2, 0x1 // следующий пиксель + sltiu v0, a2, 0x8 // X < 8 (все 8 пикселей!) + bne v0, zero, shadow_pixel_loop + nop + + addiu t5, t5, 0x04 + bne t5, s3, shadow_sprites_loop + nop + +// next line + subu a3, s3 //Двигаемся назад на ширину строки + sltu v0, a3, a0 // проверяем вышли ли за верхнюю границу + beq v0, zero, shadow_row_loop // продолжаем цикл по строкам + nop + +NotShadow: + lw t5,0x14(sp) + lw ra,0x10(sp) //Restore stack and exit + move v0, s1 + jr ra + addiu sp, sp, 0x18 \ No newline at end of file diff --git a/2_EP/EP_main_grouped.asm b/2_EP/EP_main_grouped.asm index 86c0a0e..3edd247 100644 --- a/2_EP/EP_main_grouped.asm +++ b/2_EP/EP_main_grouped.asm @@ -1,6 +1,10 @@ -; -; Persona 2 Eternal Punishment (PSX) JAP / Custom Characters/Data Patch -; Author: Sergey Shemet 06/10/2022 +///////////////////////////////////////////////////////////////////////////////// +// +// Persona 2 Eternal Punishment (PSX) JAP / Custom Characters/Data Patch +// Author: Sergey Shemet 05/11/2025 +// +// v 1.1 - Grouped Chars VRAM Rendering +// .psx @@ -13,12 +17,12 @@ .definelabel MyAddr, 0x8009 -.open "SLPS_028.25", 0x8000F800 +.open "2_EP/BIN/SLPS_028.25", 0x8000F800 .org 0x80090000 ExternalPrint: - // Текстовая тестовая процедура + lhu v0, 0x0(a0) // Читаем 2 байта текста nop srl v1, v0, 0xD // Проверяем 13-й бит (система 1 байт) @@ -29,366 +33,428 @@ ExternalPrint: MyPrintLineRoutine: addiu sp, sp, -0x50 // Выделяем место в стеке - sw s4, 0x38(sp) // Сохраняем регистры - move s4, a0 // Адрес чтения текста -> s4 + sw ra, 0x48(sp) // Сохраняем регистры sw s0, 0x28(sp) - move s0, a1 sw s1, 0x2c(sp) - move s1, a2 + sw s2, 0x30(sp) sw s3, 0x34(sp) + sw s4, 0x38(sp) // Сохраняем регистры + sw s5, 0x3c(sp) + sw s6, 0x40(sp) + sw s7, 0x44(sp) - // Обработка новой команды + move s6, a0 // Адрес чтения текста -> s6 + move s1, a1 + move s2, a2 + + + // Смещаем поинтер чтения andi v0, v0, 0xff // Берем младший байт - addiu s4, s4, 0x2 // Сдвигаем указатель текста на +2 байта - + addiu s6, s6, 0x2 // Сдвигаем указатель текста на +2 байта lui s3, MyAddr - sw v0, -0x10(s3) // Сохраняем счетчик байтов @ 8008fff0 + sh v0, -0x10(s3) // Сохраняем счетчик байтов @ 8008fff0 для общего количества + sh v0, -0x0e(s3) // Сохраняем счетчик байтов @ 8008fff2 для обратного отсчёта - // Инициализация scratchpad - lui s3, 0x1f80 - ori s3, s3, 0x3d0 // s3 = 1f8003d0 - команда копирования спрайта lui t0, 0xff ori t0, t0, 0xffff // t0 = 00FFFFFF - andi a0, a3, 0xff // Режим текста (цвет и тень) - lui a3, 0x8008 // a3 = 80080000 - lui a2, 0xff00 // a2 = FF000000 + sw s0, 0x28(sp) // Сохраняем s0 в стеке + andi s0, a3, 0xff // s0 - режим текста (цвет и тень) + move a0, s0 // a0 = s0 (обрезанный цвет) + lui a3, 0x8008 // a3 = 80080000 + lui a2, 0xff00 // a2 = FF000000 - addiu t1, a3, -0x31a8 // t1 = 8007b6d0 - новая свободная цепочка - lw v1, -0x31a8(a3) // v1 = загружаем свободную цепочку +//Начинаем формировать цепочки + addiu t1, a3, -0x31a8 // t1 = 8007ce68 - Второй счётчик цепочек (корорый меньше) + lw v1, 0x0(t1) // v1 = загружаем свободную цепочку lbu a1, 0x60(sp) // Флаг тени из стека -> a1 - lui v0, 0x8000 // v0 = 80000000 - sw ra, 0x48(sp) // Сохраняем регистры - sw s7, 0x44(sp) - sw s6, 0x40(sp) - sw s5, 0x3c(sp) - sw s2, 0x30(sp) + lui v0, 0x8000 // v0 = 80000000 - // Инициализация цепочек - and a2, v1, a2 // a2 = v1 & ff000000 + and a2, v1, a2 // a2 = v1 & ff000000 andi a1, a1, 0xff // Очищаем режим текста - and v1, v1, t0 // v1 & 00ffffff - or s5, v1, v0 // s5 - основной адрес свободной цепочки + and v1, v1, t0 // v1 & 00ffffff + or s4, v1, v0 // s5 - основной адрес свободной цепочки lw v0, 0x4(t1) // Загружаем счетчик DMA lw v1, 0x0(s5) // v1 = следующая свободная цепочка addiu v0, v0, -0x1 // Уменьшаем счетчик DMA - and v1, v1, t0 // v1 & 00ffffff - or a2, a2, v1 // a2 | v1 = следующая свободная цепочка + and v1, v1, t0 // v1 & 00ffffff + or a2, a2, v1 // a2 | v1 = следующая свободная цепочка sw v0, 0x4(t1) // Сохраняем счетчик DMA - sw a2, -0x31a8(a3) // Сохраняем следующую свободную цепочку - jal storeColor - move a0, s5 // Текущий адрес цепочки - sll a1, s0, 0x10 // a1 = X << 16 + jal storeColor //Сохраняем цвет + sw a2, 0x0(t1) // Сохраняем следующую свободную цепочку + + move a0, s4 // Текущий адрес цепочки + sll a1, s1, 0x10 // a1 = X << 16 sra a1, a1, 0x10 // a1 = X координата - sll a2, s1, 0x10 // a2 = Y << 16 - jal initCopyCharChain // Инициализация цепочек символов + sll a2, s2, 0x10 // a2 = Y << 16 sra a2, a2, 0x10 // a2 = Y координата + jal initCopyCharChain // Инициализация цепочки символов (в a0 адрес, a1 - X, a2 - Y) + move a3, s0 //Режим +cputovram_scratchpad_template: // Инициализация ScratchPad (CPU to VRAM) - lui a2, 0x1f80 - ori a2, a2, 0x348 // a2 = первый символ начала + lui a3, 0x1f80 + ori a3, a3, 0x0348 // a3 = CpuToVram cmd template addr - // 4-битная таблица паттернов - .include "EP_4bitPattern.asm" + lui a1, 0x0F00 // Количество команд без flushcache + sw a1, 0x0(a3) // Сохраняем количество команд - li v0, 0x2 - sh v0, 0x1c(sp) - li v0, 0xc - li a0, 0x10 // Команды в цепочке формирования символа? - lui v1, 0xa000 // a0 = a0000000 - sh v0, 0x1e(sp) // Сохраняем 000C0002 в стек+1c + lui a0, 0xa000 // a0 = a0000000 + sw a0, 0x4(a3) - // Инициализация символа - lui v0, 0x100 // Сброс кэша 01000000 - sb a0, 0x3(a2) // Сохраняем количество команд - sw v1, 0x4(a2) // Сохраняем a0000000 + lui v0, 0x01f0 + ori v0, 0x0130 + sw v0, 0x8(a3) // сохраняем VU для CPUtoVRAM - lui at, 0x1f80 // Начало scratchpad - sw v0, 0x388(at) // Сохраняем в конец первой цепочки символов + lui v0, 0xc + ori v0, 0x2 + sw v0, 0xc(a3) // сохраняем 000c0002 (ширина в 16-битных пикселях) - // Формирование команды DMA копирования спрайта - li v0, 0x4 - sb v0, 0x3(s3) // Длина цепочки = 4 - li v0, 0x64 - sb v0, 0x7(s3) // Команда копирования спрайта +_1bppTo4bpp_table_template: + // Копирование таблицы преобразования 1bpp в 4bpp + lui t8, 0x1f80 + ori t8, t8, 0x390 + lui t7, 0x8001 + ori t7, t7, 0x3e8 + lw t5, 0x0(t7) + lw t6, 0x4(t7) + sw t5, 0x0(t8) + sw t6, 0x4(t8) + lw t5, 0x8(t7) + lw t6, 0xC(t7) + sw t5, 0x8(t8) + sw t6, 0xC(t8) + lw t5, 0x10(t7) + lw t6, 0x14(t7) + sw t5, 0x10(t8) + sw t6, 0x14(t8) + lw t5, 0x18(t7) + lw t6, 0x1C(t7) + sw t5, 0x18(t8) + sw t6, 0x1C(t8) - lhu a0, 0x98(gp) // Загружаем X координату - lhu v1, 0x9a(gp) // Загружаем Y координату +rect_scratchpad_template: + // Шаблон команды rect в scratchpad + lui s3, 0x1f80 + ori s3, 0x03d0 // s3 = 1f8003d0 - адрес rect в scratchpad + lui v0, 0x0400 + sw v0, 0x0(s3) // Длина цепочки = 4 + lui v0, 0x6480 + ori v0, 0x8080 + sw v0, 0x4(s3) + li v0, 0xf0c0 + sh v0, 0xc(s3) // Сохраняем координаты VU (всегда f0c0) + lhu v1, 0x9a(gp) // Загружаем CLUT из GP (всегда 7FD3) + + li v0, 0 + sw v0, 0x8(s3) //Чистим экранные координаты + sh s2, 0xa(s3) //И сразу устанавливаем Y - li v0, 0x80 - sb v0, 0x4(s3) - sb v0, 0x5(s3) - sb v0, 0x6(s3) // Формируем 80808064 + lui v0, 0xc + ori v0, 0x8 // Ширина спрайта = 8 + sw v0, 0x10(s3) // Сохраняем ширину + sh v1, 0xe(s3) // Сохраняем CLUT -setY1: - lw v0, 0x1c(sp) // v0 = 000c0002 из стека - lh a3, 0x98(gp) // Для дальнейших расчетов X спрайта - sh a0, 0x18(sp) - sh v1, 0x1a(sp) // Сохраняем координаты в стек - lw a0, 0x18(sp) // Загружаем координаты из стека - move t0, a3 - sw a0, 0x8(a2) // Загружаем координаты в DMA - sw v0, 0xc(a2) // Сохраняем в первый символ +make_sprite_size_table: + lui s3, 0x1f80 + ori s3, 0x03f0 // Будем серить в scratch + lui v0, 0x0403 // таблицей рассчитанных команд и ширин + ori v0, 0x0201 // необходимых для спрайтов линии (cmdCount << 2) + sw v0, 0x0(s3) + lui v1, 0x0706 + ori v1, 0x0504 + sw v1, 0x4(s3) + li v0, 0x0807 + sh v0, 0x8(s3) - bgez a3, LAB_800194fc +misc_init: + move t6, s1 // Текущий экранный X, который будет смещаться и писаться в команду rect + // Устанавливаем, исходя из прилетевшей координаты X -SetX1: - sh s1, 0x20(sp) // Сохраняем X половину в sp+20 - addiu t0, a3, 0x3f +TextGroupReadLoop: + // Смотрим количество символов до предела (не более 10) (проверяем MyAddr-0xE) + // Отнимаем количество символов в MyAddr-0xE. Устанавливаем признак, если ещё не конец + // Копируем символы во временный буфер MyAddr (-0x0с) -LAB_800194fc: - // Декодирование координат для исходного спрайта - sra v0, t0, 0x6 // v0 = t0 >> 6 - sll v0, v0, 0x6 // v0 << 6 - subu v0, a3, v0 // v0 = a3 - v0 - lh v1, 0x9a(gp) // Загружаем Y половину из памяти - sll v0, v0, 0x2 // v0 << 2 - sb v0, 0xc(s3) // Сохраняем X байт спрайта символа - bgez v1, LAB_80019520 // Если Y >= 0 - ветвление - move v0, v1 - addiu v0, v1, 0xff // Иначе v0 = ff - v1 + lui s3, 0x1f80 + ori s3, 0x03f0 // Перезадаём адрес таблицы количества спрайтов для нового цикла + lui t1, MyAddr //Постоянный счётчик -LAB_80019520: - sra v0, v0, 0x8 - sll v0, v0, 0x8 - subu v0, v1, v0 - sb v0, 0xd(s3) // Сохраняем Y байт спрайта символа - lhu v1, 0xa0(gp) + lh v1, -0x0e(t1) //Загружаем количество оставшихся символов + lui t2, MyAddr //Сдвиг для буфера + sltiu a0, v1, 0x0B //Меньше 10 в строке? + bne a0, zero, readTextToBuffer + clear s2 //Обнуляем счётчик символов + li v1, 0xA //Установка максимального количество символов - li v0, 0x8 // Ширина спрайта = 8 - sh v0, 0x10(s3) // Сохраняем ширину - sh v1, 0xe(s3) // Сохраняем значение + readTextToBuffer: + lbu a0, 0x0(s6) // Основное чтение байта текста + addiu s6, s6, 0x1 // Сдвиг адреса чтения на +1 байт + addiu v1, v1, -0x1 // Осталось в этом блоке... + sb a0, -0x0c(t2) // Запись символа в буфер + addiu s2, s2, 0x1 // Счётчик прочитанного +1 + lh v0, -0x0e(t1) // Грузим общий счётчик + addiu t2, t2, 0x1 // Сдвиг записи +1 + addiu v0, v0, -0x01 // Общий счётчик -1 + bne v1, zero, readTextToBuffer // Проверяем частный счётчик != 0 + sh v0, -0x0e(t1) // Сохраняем общий счётчик + + li a0, 0 + sb a0, -0x0c(t2) //На всякий случай сохраняем 00-терминатор - sh s0, 0x8(s3) // Сохраняем X - sh s1, 0xa(s3) // Сохраняем Y + addu s3, s3, s2 // получаем адрес количества спрайтов из таблицы + addiu s3, -0x1 // index -1 + lbu a1, 0x0(s3) // Читаем количество в a1 + nop + move t5, a1 // Храним количество блоков для спрайта - li v0, 0xc // Высота спрайта = 12 - sh v0, 0x12(s3) // Сохраняем высоту + lui t3, 0x1f80 + ori t3, t3, 0x1c0 // Начало данных спрайта в scratch - // Начало чтения текста - lbu a0, 0x0(s4) // Основное чтение байта команды - nop - addiu s4, s4, 0x1 // Сдвиг адреса чтения на +1 байт + form_char_data_in_scratch: + jal make_char_line_in_scratch //Вызываем процедуру формирования строки + move a0, s2 //Передаём в неё длину строки в символах (a0) и в спрайтах (a1) + // (формируем спрайт размером до 60x12) -SpaceCheckBranch: - jal makeCharPixelsCustom // Создание маленького символа в scratch - clear s2 + rect_cmd_init: - lui t2, 0xff00 // t2 = ff000000 - move t6, s5 // Параметры - addiu t5, sp, 0x10 // t5 = sp + 10 - lui t3, 0x8008 - addiu t4, t3, -0x31a8 - move t1, s5 // Параметры снова + lui s3, 0x1f80 + ori s3, 0x03d0 // s3 = 1f8003d0 - адрес rect в scratchpad -SetY: -SetX: -PageLoop: - // Создание цепочки копирования спрайта - lw v0, -0x3198(s6) // v0 = *адрес свободной цепочки - nop - and a0, v0, t2 // a0 = v0 & ff00.. - and v0, v0, s0 // v0 & 00FFFFFF - or a1, v0, s1 // a1 = v0 | 80000000 - lw v0, 0x4(s7) // Счетчик команд - lw v1, 0x0(a1) // Новый адрес свободной цепочки - addiu v0, v0, -0x1 // Уменьшаем счетчик - and v1, v1, s0 // v1 & 00FFFFFF - or a0, a0, v1 // a0 & v1 - sw v0, 0x4(s7) // Сохраняем счетчик DMA - sw a0, -0x3198(s6) // Сохраняем новую свободную цепочку + lui s1, 0x8008 // Загружаем 80080000 -CopyCmdFromScratch: - // Копирование команды из scratch - lw t9, 0x0(s3) // Количество команд DMA - lw t7, 0x4(s3) // Команда копирования спрайта - lw t8, 0x8(s3) // Координаты экрана XY - lw t5, 0xc(s3) // CLUT и координаты текстуры - sw t9, 0x0(a1) - sw t7, 0x4(a1) - sw t8, 0x8(a1) - sw t5, 0xc(a1) - lw t9, 0x10(s3) // Размер спрайта после копирования - nop - sw t9, 0x10(a1) // Сохраняем последнюю команду + lui s0, 0xff + ori s0, s0, 0xffff // s0 = 00ffffff + lui s7, 0x8000 // s7 = 80000000 - lw v1, 0x18(t1) // Следующий параметр - lw v0, 0x0(a1) // Текущий новый адрес цепочки - lw v1, 0x0(v1) // Загружаем значение - and v0, v0, t2 // v0 & ff000000 - and v1, v1, s0 // v1 & 00FFFFFF - or v0, v0, v1 // Команды с FFFFFF - sw v0, 0x0(a1) // Обновляем текущий адрес цепочки - lw a0, 0x18(t1) // Первый адрес цепочки - nop - lw v0, 0x0(a0) // Первая ссылка цепочки на следующую - and v1, a1, s0 // v1 = a1 & 00FFFFFF - and v0, v0, t2 // v0 & FF000000 - or v0, v0, v1 // Последний адрес цепочки - sw v0, 0x0(a0) // Первая цепочка следующего адреса - sw a1, 0x18(t1) // Текущий адрес цепочки - lhu v0, 0x4(t6) // Счетчик символов - nop - bne v0, zero, NotFirstChar // Если счетчик символов ≠ 0, переходим - nop + lui t2, 0xff00 // t2 = ff000000 + move t4, s4 // t4 - указатель на print params ОСНОВНОЙ + move t1, s4 // t1 - print params для смещения страниц - sw a1, 0x28(t1) // Устанавливаем первую цепочку символов - sw t8, 0xc(t6) // Сохраняем координаты в параметры - // sh s2, 0xe(t4) // Сохраняем половину Y + rect_set_X: + sh t6, 0x8(s3) // Сохраняем X координату в текущий rect -NotFirstChar: - lui a1, 0x1f80 // Адрес символа здесь - lw v0, -0x31a8(t3) // Следующая свободная цепочка - ori a1, a1, 0x348 // a1 | 1f800348 = Scratch данные символа - and a0, v0, t2 // a0 = v0 & FF000000 - and v0, v0, s0 // v0 & 00FFFFFF - or a3, v0, s1 // a3 = следующая цепочка & 80... - move a2, a3 // a2 = a3 (следующая цепочка) - lw v0, 0x4(t4) // Счетчик команд - lw v1, 0x0(a3) // Новый адрес свободной цепочки - addiu v0, v0, -0x1 // Уменьшаем счетчик - and v1, v1, s0 // v1 & 80... количество команд - or a0, a0, v1 // a0 & v1 - sw v0, 0x4(t4) // Сохраняем счетчик DMA - andi v0, a3, 0x3 // Проверяем адрес назначения MOD 4 - sw a0, -0x31a8(t3) // Сохраняем новую свободную цепочку + sll v0, s2, 1 + addu v0, s2 // Умножаем количество обработанных символов на 6 + sll v0, 1 + addu t6, v0 // Сдвигаем X (прочитаем со следующим блоком символов) + rect_set_width: + sll v0, t5, 3 //Количество блоков спрайта * 8 = ширина спрайта + sh v0, 0x10(s3) // Сохраняем ширину спрайта - beq v0, zero, Copy16Bytes // Если MOD 4 = 0, ветвление - addiu v0, a1, 0x40 + PageLoop: -CopyBy2Bytes: - // Копируем по 2 байта если MOD 4 ≠ 0 - lwl t9, 0x3(a1) - lwr t9, 0x0(a1) - lwl t7, 0x7(a1) - lwr t7, 0x4(a1) - lwl t8, 0xb(a1) - lwr t8, 0x8(a1) - lwl t5, 0xf(a1) - lwr t5, 0xc(a1) - swl t9, 0x3(a2) - swr t9, 0x0(a2) - swl t7, 0x7(a2) - swr t7, 0x4(a2) - swl t8, 0xb(a2) - swr t8, 0x8(a2) - swl t5, 0xf(a2) - swr t5, 0xc(a2) - addiu a1, a1, 0x10 - bne a1, v0, CopyBy2Bytes - addiu a2, a2, 0x10 - j last4BytesCopy - nop + ////// Балансировщик нагрузки выбора цепочек для равномерного размещения команд (2 команды в 7ce58 + 1 команда в 7ce68) + //////////////////////////////////////// TODO: CHAIN BALANCER + addiu s5, s1, -0x3198 // s5 = 7ce68 (Второй свободный адрес dma) -Copy16Bytes: - // Копируем по 16 байт - lw t9, 0x0(a1) - lw t7, 0x4(a1) - lw t8, 0x8(a1) - lw t5, 0xc(a1) - sw t9, 0x0(a2) - sw t7, 0x4(a2) - sw t8, 0x8(a2) - sw t5, 0xc(a2) - addiu a1, a1, 0x10 - bne a1, v0, Copy16Bytes - addiu a2, a2, 0x10 + //s5 - содержит указатель на адрес следующей свободной цепочки. В зависимости от балансировщика может быть 7ce58 или 7ce68 + + // Создание цепочки копирования спрайта + lw v0, 0x0(s5) // v0 = *адрес свободной цепочки + nop + and a0, v0, t2 // a0 = v0 & ff00.. + and v0, v0, s0 // v0 & 00FFFFFF + or a1, v0, s7 // a1 = v0 | s7 (80000000) + lw v0, 0x4(s5) // Счетчик команд + lw v1, 0x0(a1) // Новый адрес свободной цепочки + addiu v0, v0, -0x1 // Уменьшаем счетчик + and v1, v1, s0 // v1 & 00FFFFFF + or a0, a0, v1 // a0 & v1 + sw v0, 0x4(s5) // Сохраняем счетчик DMA + sw a0, 0x0(s5) // Сохраняем новую свободную цепочку -last4BytesCopy: - // Копируем последние 4 байта - lwl t9, 0x3(a1) - lwr t9, 0x0(a1) - nop - swl t9, 0x3(a2) - swr t9, 0x0(a2) + rect_copy_scratch_to_ram: + lw t8, 0x0(s3) // Количество команд DMA + lw t7, 0x4(s3) // Команда копирования спрайта + sw t8, 0x0(a1) + sw t7, 0x4(a1) + lw a3, 0x8(s3) // Координаты экрана XY + lw t7, 0xc(s3) // CLUT и координаты текстуры + sw a3, 0x8(a1) + sw t7, 0xc(a1) + lw t8, 0x10(s3) // Размер спрайта после копирования + nop + sw t8, 0x10(a1) // Сохраняем последнюю команду - // Связывание DMA символа + копирование спрайта - lw v1, 0x18(t1) // Текущая цепочка DMA копирования спрайта - lw v0, 0x0(a3) // Текущие команды цепочки символов - lw v1, 0x0(v1) // Количество команд + следующая ссылка - and v0, v0, t2 // v0 & FF..... - and v1, v1, s0 // v1 & 00FFFFFF - or v0, v0, v1 // Количество команд & FF.. - sw v0, 0x0(a3) // Сохраняем текущую команду цепочки - lw a0, 0x18(t1) // Адрес заголовка текущей команды копирования спрайта - nop - lw v0, 0x0(a0) // 04FFFFFF - and v1, a3, s0 // v1 = копирование текущей цепочки символов - and v0, v0, t2 // v0 & FF000000 (количество команд) - or v0, v0, v1 // Полная команда со ссылкой - sw v0, 0x0(a0) // Сохраняем с ссылкой на цепочку символов - sw a3, 0x18(t1) // Последняя цепочка символов - addiu t1, t1, 0x4 // Сдвигаем параметры для следующей страницы - addiu v0, t6, 0x8 // Сдвигаем первый параметр цепочки для страницы - sltu v0, t1, v0 // Проверяем прохождение первой страницы - bne v0, zero, PageLoop // Если не прошли, продолжаем цикл страниц - nop + rect_scratch_connect: + lw v1, 0x18(t1) // Загружаем адрес след цепочки из print params (cur page) + lw v0, 0x0(a1) // Текущий новый адрес цепочки + lw v1, 0x0(v1) // Разыменование + and v0, v0, t2 // v0 & ff000000 + and v1, v1, s0 // v1 & 00FFFFFF + or v0, v0, v1 // Команды с FFFFFF + sw v0, 0x0(a1) // Обновляем текущий адрес цепочки - // Сдвиг X координаты (+6) - lhu v0, 0xa8(gp) // Загружаем начальный X - lhu v1, 0x8(s3) // Загружаем последний X в scratch - addiu v0, v0, 0x6 // v0 = начальный X + 6 - addu v1, v1, v0 // Последний X = последний X + (начальный X + 6) - sh v1, 0x8(s3) // Обновляем последний X в DMA scratch + lw a0, 0x18(t1) // Загружаем адрес след цепочки из print params (cur page) + nop + lw v0, 0x0(a0) // Разыменование + and v1, a1, s0 // v1 = a1 & 00FFFFFF + and v0, v0, t2 // v0 & FF000000 - чистим кол-во команд + or v0, v0, v1 // прикручиваем кол-во команд к след адресу + sw v0, 0x0(a0) // Сохраняем в цепочку ссылку + sw a1, 0x18(t1) // Сохраняем адрес след актуальной цепочки в print params (cur page) + + lhu v0, 0x4(t4) // Проверяем счетчик символов в print params + nop + bne v0, zero, cpu2vram_cmd_loop // Если счетчик символов ≠ 0, переходим (уже инициализировали) + clear s8 // Сбрасываем счётчик команд спрайтов -SpaceJump: - // Увеличиваем счетчик символов + проверка - lhu v0, 0x4(s5) // Текущее количество символов DMA - lui t9, MyAddr - addiu v0, v0, 0x1 // Увеличиваем на 1 - sh v0, 0x4(s5) // Сохраняем счетчик в цепочку + sw a1, 0x28(t1) // Устанавливаем адрес начала цепочки символов в print_params (для хранения значения "цепочка от адреса...") + sw a3, 0xc(t4) // Сохраняем экранные координаты в print params - // Проверка переполнения DMA - lw v0, 0x4(s7) // Счетчик команд DMA - move v1, 5 // Минимальный счетчик команд - sltu v0, v0, v1 // v0 < v1? - bne v0, zero, TextEnd // Если переполнение DMA, завершаем текст - nop - lui t3, MyAddr - lhu v0, -0xE(t3) // Количество символов в строке - lhu v1, -0x10(t3) // Общее количество символов в строке - addiu v0, v0, 0x1 // Увеличиваем на 1 - lbu a0, 0x0(s4) // Загружаем следующий символ - sh v0, -0xE(t3) // Сохраняем счетчик символов - addiu s4, s4, 0x1 // Сдвигаем адрес символа + cpu2vram_cmd_loop: + // Цикл команд cpu_to_vram (формирование спрайтов текста в VRAM) + + ////// Балансировщик нагрузки выбора цепочек для равномерного размещения команд (2 команды в 7ce58 + 1 команда в 7ce68) + //////////////////////////////////////// TODO: CHAIN BALANCER + addiu s5, s1, -0x31a8 // s5 = 7ce58 (Первый свободный адрес dma) + + //s5 - содержит указатель на адрес следующей свободной цепочки. В зависимости от балансировщика может быть 7ce58 или 7ce68 + + lw v0, 0x0(s5) // Следующая свободная цепочка 7ce58 () + nop + and a0, v0, t2 // a0 = v0 & FF000000 + and v0, v0, s0 // v0 & 00FFFFFF + or a3, v0, s7 // a3 = следующая цепочка & 80... + move a2, a3 // a2 = a3 (следующая цепочка) + lw v0, 0x4(s5) // Счетчик команд + lw v1, 0x0(a3) // Новый адрес свободной цепочки + addiu v0, v0, -0x1 // Уменьшаем счетчик + and v1, v1, s0 // v1 & 00FFFFFF + or a0, a0, v1 // a0 & v1 + sw v0, 0x4(s5) // Сохраняем счетчик DMA + sw a0, 0x0(s5) // Сохраняем новую свободную цепочку + + //Копируем шаблон cpu2vram + + lui a1, 0x1f80 + ori a1, a1, 0x348 // 1f800348 = Scratch команда cpu2vram + lw t8, 0x0(a1) + lw t7, 0x4(a1) + sw t8, 0x0(a2) + sw t7, 0x4(a2) + lw t8, 0x8(a1) //Сохраняем базу команды cpu2vram + lw t7, 0xc(a1) + sw t8, 0x8(a2) + sw t7, 0xc(a2) + + sll v1, s8, 1 //Текущий индекс блока * 2 + addiu v0, v1, 0x130 //складываем со 0x130 (X начала спрайта в VRAM) + sh v0, 0x8(a2) //Обновляем VU X прямо в RAM + + copy_char_data_start: + lui t3, 0x1f80 + ori t3, t3, 0x1c0 // Начало данных спрайта в scratch + + addiu a2, 0x10 //Адрес для записи данных после заголовка команды + clear v0 //Основной счётчик строк (0-11) + + sll v1, t5, 2 //v1 = количество байт в одной строке (блоки * 4) (инкремент) + sll a1, s8, 2 //Вычисляем смещение начала чтения + addu a1, t3 //a1 = адрес начала чтения в scratch + + copy_char_data_loop: + lw t7, 0x0(a1) //Грузим данные + addu a1, v1 //Смещаем адрес чтения + sw t7, 0x0(a2) //Сохраняем данные + + addiu a2, 0x04 //Смещаем адрес записи + addiu v0, 0x01 //Инкремент счётчика строк + bne v0, 0x0c, copy_char_data_loop + nop + + bne s8, zero, cpu2vram_dma_link // Если это первая команда (последняя выполняемая, то добавляем flushcache) + nop + + set_flush_cache_cmd: + li t8, 0x10 + sb t8, -0x3d(a2) //Обновляем длину команды до 0x10 + lui t8, 0x0100 + sw t8, 0x0(a2) //Устанавливаем команду flush cache в конце команды + + cpu2vram_dma_link: + // Связывание предыдущей команды с текущей (формирование ссылки в заголовке команды) + lw v1, 0x18(t1) // v1 <- 18+(t1) - указатель на конец цепочки в текущей странице) + lw v0, 0x0(a3) // v0 <- 0+(a3) - снова читаем первую команду (в данном случае - количество команд) + lw v1, 0x0(v1) // Разыменование указателя на след свободный адрес в цепочке (из print_params) + and v0, v0, t2 // v0 & FF..... Чистим количество команд + and v1, v1, s0 // v1 & 00FFFFFF - чистим след свободный адрес + or v0, v0, v1 // Совмещаем ссылку - Cmd+ADDR + sw v0, 0x0(a3) // Сохраняем ссылку в цепочку + + //Связывание текущей команды со следующей (формирование ссылки в заголовке команды + запись в print params) + lw a0, 0x18(t1) // v1 <- 18+(t1) - указатель на конец цепочки в текущей странице) + nop + lw v0, 0x0(a0) // Читаем то, на что указывает указатель (след адрес в цепочке из цепочки) + and v1, a3, s0 // v1 = a3 & 00FFFFFF - от следующего адреса свободной команды отрезаем 80 + and v0, v0, t2 // v0 & FF000000 (количество команд) от след адреса + or v0, v0, v1 // Совмещаем ссылку - Cmd+ADDR + sw v0, 0x0(a0) // Сохраняем ссылку в цепочку + sw a3, 0x18(t1) // Сохраняем адрес последней команды в print params + + //Конец цикла команд cpu_to_vram + addiu s8, 0x1 //Смешаем индекс читаемого спрайта + bne s8, t5, cpu2vram_cmd_loop //Проверка на достижение количества спрайтов + nop + + addiu t1, t1, 0x4 // Сдвигаем print params для следующей страницы + addiu v0, t4, 0x8 // v0 = t4 + 8 (t1 не должен быть больше, чем t4 + 4) + sltu v0, t1, v0 // Проверяем прохождение первой страницы + bne v0, zero, PageLoop // Если не прошли, продолжаем цикл страниц + nop + + chunk_making_end: + // Увеличиваем счетчик символов + проверка + lhu v0, 0x4(s4) // Текущее количество спрайтов + lui t3, MyAddr + addiu v0, v0, 0x1 // Увеличиваем на 1 + lhu v1, -0x0e(t3) // Количество оставшихся символов + sh v0, 0x4(s4) // Сохраняем счетчик спрайтов в print_params + + bne v1, zero, TextGroupReadLoop + // Если обработаны все буквы и созданы все спрайты, то выходим + nop - bne v0, v1, NextChar // Если текущий символ ≠ общему количеству, продолжаем - nop TextEnd: clear s2 lui s3, 0x8008 - addiu s4, s3, -0x3198 // s4 = 7b6d0 + addiu s5, s3, -0x3198 // s5 = 7ce68 (Второй свободный адрес dma) lui s1, 0xff ori s1, s1, 0xffff // s1 = 00ffffff - move s0, s5 // s0 = текущие параметры строки + move s0, s4 // s0 = Указатель на print params (теперь они и в t1, s4 и s0) clear a1 PageTLoop: - // Завершающая обработка страниц + //Добавляем команду переключения текстурной страницы (SetDrawTPage) в обе страницы li a2, 0x1 // a2 = 1 - addu s2, s2, a2 // Увеличиваем счетчик + addu s2, s2, a2 // Увеличиваем счетчик страниц + lui v0, 0x8000 // v0 = 80000000 lui a0, 0xff00 // a0 = ff000000 - lw v1, -0x3198(s3) // Следующая свободная цепочка - lw a3, 0x9c(gp) // Некоторые параметры (почти DMA) + + lw v1, 0x0(s5) // Следующая свободная цепочка + lw a3, 0x9c(gp) // Текстурная страница из параметров and v1, v1, s1 // v1 & 00FFFFFF or v1, v1, v0 // v1 | v0 = 80..... - sw v1, 0x30(s0) // Сохраняем последний свободный адрес в параметрах DMA - lw v0, -0x3198(s3) // Следующая свободная цепочка - lw v1, 0x0(v1) // Создаем еще одну цепочку + sw v1, 0x30(s0) // Сохраняем последний адрес в print params + + //Линкуем адреса + lw v0, 0x0(s5) // Следующая свободная цепочка ещё раз! + lw v1, 0x0(v1) // разыменование and v0, v0, a0 // v0 & ff000000 and v1, v1, s1 // v1 & 00FFFFFF - lw a0, 0x4(s4) // Счетчик DMA + lw a0, 0x4(s5) // Счетчик DMA or v0, v0, v1 // v0 | v1 - sw v0, -0x3198(s3) // Новый адрес свободной цепочки - addiu a0, a0, -0x1 // Уменьшаем счетчик DMA - sw a0, 0x4(s4) // Сохраняем счетчик DMA - lw a0, 0x30(s0) // Начало цепочки DMA + sw v0, 0x0(s5) // Сохраняем свободный адрес + addiu a0, -0x1 // Уменьшаем счетчик DMA + sw a0, 0x4(s5) // Сохраняем счетчик DMA + lw a0, 0x30(s0) // Читаем адрес команды в a0 для передачи в функцию установки texPage jal SetDrawTPage // Устанавливаем страницу отрисовки - addiu s0, s0, 0x4 // Сдвигаем параметры DMA для следующей страницы + addiu s0, s0, 0x4 // Смещаем print params для следующей страницы sltiu v0, s2, 0x2 // Проверяем счетчик < 2 bne v0, zero, PageTLoop // Если да, продолжаем цикл clear a1 // a1 = 0 @@ -407,4 +473,16 @@ PageTLoop: lw s0, 0x28(sp) jr ra // Возврат - addiu sp, sp, 0x50 // Восстанавливаем стек \ No newline at end of file + addiu sp, sp, 0x50 // Восстанавливаем стек + + +.include "2_EP/EP_charload_grouped.asm" +.include "2_EP/EP_charCalcs.asm" +.close + +.include "2_EP/EP_txtpatches.asm" // misc text patches + + + + +// compile with ./armips -sym 2_EP/BUILD_LOGS/SLPS_028.25.map -temp 2_EP/BUILD_LOGS/SLPS_028.25.txt 2_EP/EP_main_grouped.asm \ No newline at end of file diff --git a/2_EP/EP_txtpatches.asm b/2_EP/EP_txtpatches.asm index 5a41f71..eaec49c 100644 --- a/2_EP/EP_txtpatches.asm +++ b/2_EP/EP_txtpatches.asm @@ -29,38 +29,32 @@ // ;;;;;;;;;;;;;;;;;;;;;;;;Print Routines Calls Replacing // ;main dialog calls from PrintProgramText Routine -// .org 0x8001cd58 -// jal ExternalPrint -// .org 0x8001cdd8 -// jal ExternalPrint - -// .org 0x8001c098 -// jal ExternalPrint -// .org 0x8001c10c -// jal ExternalPrint - - +.org 0x8001d0c4 + jal ExternalPrint +.org 0x8001d138 + jal ExternalPrint +.org 0x8001df7c + jal ExternalPrint +.org 0x8001dffc + jal ExternalPrint // ;printPlaneTEXT (PlayerName, etc...) -// .org 0x8001c388 -// jal ExternalPrint - - +.org 0x8001d1dc + jal ExternalPrint // ;custom CheckCharNumToLineEnd for proper Complex Lines Read (charcountread) -// .org 0x8001abf4 -// j ReturnCharsInString ;custom routine -// clear v1 +.org 0x8001bee0 + j ReturnCharsInString ;custom routine + clear v1 // ;j 0x8001af00 ;original code // ;calcnextX Custom - -// .org 0x8001ac1c -// ; addiu sp,sp,-0x18 ;Original Code -// ; sw ra,0x10(sp) -// j calcnextXCustom ;PATCHED -// nop +.org 0x8001bf08 + ; addiu sp,sp,-0x18 ;Original Code + ; sw ra,0x10(sp) + j calcnextXCustom ;PATCHED + nop .close diff --git a/GROUPED_ALGO.txt b/GROUPED_ALGO.txt index d27001e..b45f7dd 100644 --- a/GROUPED_ALGO.txt +++ b/GROUPED_ALGO.txt @@ -60,7 +60,7 @@ next x IS inner data -1f8001e0 - +1f8001c0 - 1f800348 - 4bit chardata 1f800348 - CpuToVram cmd template @@ -83,6 +83,11 @@ IS inner data c0f0d37f - src coords & clut 08000c00 - width & heigth + +1f8003f0 - SpriteCmdLengthTable + + + IS regs: a2 - FF000000 a3 - 80080000 @@ -92,6 +97,7 @@ IS regs: s7 - 80000000 address mask t0 - 00FFFFFF + t2 - FF000000 t1 - print_params for PAGE @@ -122,20 +128,26 @@ Custom regs: s8 - chunk block index (cpu2vram) - -- всегда за тобой +- новая система вывода текста (отказ от посимвольного вывода) - splash screen переводчика + имя в боёвке -- описания статов персон +- описания статов персон/демонов (блок!) +- жнец! - группа пернатых феникс р - розовый аргус - майя-прайм - Рейх и прочие арканы - Измеритель звёзд и прочие заклинания +- группы крови - оракул где-то рядом +- всегда за тобой +- "регистрируем Персоны" - ортр суммон + название - аэшма суммон + название - перебрать все локации в данжах +- распаковать файлы общения с демонами + +- ПЕРЕСОБРАТЬ ОБРАЗ xml2iso! diff --git a/Persona2-PSX-asm-sources.code-workspace b/Persona2-PSX-asm-sources.code-workspace new file mode 100644 index 0000000..876a149 --- /dev/null +++ b/Persona2-PSX-asm-sources.code-workspace @@ -0,0 +1,8 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": {} +} \ No newline at end of file