diff --git a/programs/games/kosilka/doexe2.asm b/programs/games/kosilka/doexe2.asm new file mode 100644 index 0000000000..fb23830629 --- /dev/null +++ b/programs/games/kosilka/doexe2.asm @@ -0,0 +1,68 @@ +filename equ 'kosilka.exe' + +virtual at 0 +file filename:3Ch,4 +load pehea dword from 0 +file filename:pehea,0F8h+28h*3 +load NumberOfSections word from 4+6 +load SizeOfOptionalHeader word from 4+14h +if NumberOfSections<>3 +error Expected three sections, .text, .bss and .reloc +end if +if SizeOfOptionalHeader<>0E0h +error Nonstandard PE header +end if +load RelocsRVA dword from 4+0A0h +load RelocsSize dword from 4+0A4h +load ImageBase dword from 4+34h +load TextRVA dword from 4+0F8h+0Ch +load TextSize dword from 4+0F8h+8 +load TextOffs dword from 4+0F8h+14h +load BSSSize dword from 4+0F8h+28h+10h +load RelocRVA dword from 4+0F8h+28h*2+0Ch +load RelocOffs dword from 4+0F8h+28h*2+14h +if BSSSize +error Second section expected to be .bss +end if +if RelocRVA<>RelocsRVA +error Third section expected to be .reloc +end if +;file 'test.exe':pehea+0F8h,28h +;load physofs dword from 4+14h +;load mem dword from 4+8 +;file 'test.exe':physofs+16,4 +;load sz dword from $-4 +end virtual + +file filename:TextOffs,TextSize + +while RelocsSize>8 +virtual at 0 +file filename:RelocOffs,8 +load CurRelocPage dword from 0 +load CurRelocChunkSize dword from 4 +end virtual +RelocsSize=RelocsSize-CurRelocChunkSize +CurRelocChunkSize = CurRelocChunkSize-8 +RelocOffs=RelocOffs+8 +while CurRelocChunkSize +virtual at 0 +file filename:RelocOffs,2 +RelocOffs=RelocOffs+2 +CurRelocChunkSize=CurRelocChunkSize-2 +load s word from 0 +end virtual +CurRelocType = s shr 12 +RelocItem = CurRelocPage + (s and 0xFFF) +if CurRelocType=0 +else if CurRelocType=3 +load z dword from RelocItem-TextRVA +store dword z-(TextRVA+ImageBase) at RelocItem-TextRVA +else +error Unexpected relocation type +end if +end while +end while + +store dword TextSize at 10h +store dword RelocRVA-TextRVA at 14h diff --git a/programs/games/kosilka/extra/develcnt.txt b/programs/games/kosilka/extra/develcnt.txt new file mode 100644 index 0000000000..91256ea838 --- /dev/null +++ b/programs/games/kosilka/extra/develcnt.txt @@ -0,0 +1,92 @@ + + "" +__________________________________________________ + + "ᨫ" ন ⥫ + ஢ ᪨. ⮬ 㬥 ᠭ + 䠩 ᪨ ஢. + +-------------------------------------------------- + +-------------------------------------------------- + + 稭 ᨨ 0.5, ন ⥫ + ஢. + ⥫ ஬ ஢ 뢠 +koslevel.pak 室 ⠫ ன. + + ⥫ ஢ 뢠 +kosilka.klp 室 ⠫ +ன. + 䠩 ⥭ 512 ⠬. + + 䠩: + 1- - ⢮ ஢ (1-255) + < 室 ᠬ ஢, ஢ + 400 . - ⪠ . + + 祭 : + 0 - ᪮襭 ࠢ + 1 - ࠢ + 2 - ᨫ + 3 - + 4 - ॢ > + < 뢠 室 ⢮ + 㫥 ⮣, ⮡ 䠩 ⥭ 512 + ⠬ > + + : ஢ ᨫ ஢ + ࠢ + + +-------------------------------------------------- + +-------------------------------------------------- + + 稭 ᨨ 1.11, "ᨫ" ন +᪨ 㭨ᠫ쭮 ଠ USF+ (Universal Skin +Format +). - + USF+. + ᪨ 뢠 kosilka.usf - + ⠫ ன. + + ᫨ 㦨 ᪨, ⨢ - +᪮ ଫ . + ⪫. ⮣ +. + + USF-䠩 ᪨ "ᨫ": + + 䠩 ⥭ 512 ⠬. + - ⢮ "ਠ⮢" ᪨ ( ࠧ- +묨 ⠡) 䠩. 0x01. + 騥 3 - ᠭ "ਠ" ਭ. + +1) ⢮ ࠦ - 㪠뢠 0x08 +2) ਭ ࠦ - 㪠뢠 0x18 +3) ࠦ - 㪠뢠 0x18 + + + ।⢥ ᪨. + , 㪠 , ᮤন 8 ⨭ ࠧ- +஬ 2424 ( 1728 ). + 窨 뢠 3- ⠬: R,G,B +(, , ᨭ). + + ⨭ 䠩 ᫥饬 浪: + - ᨫ + - ᨫ + - ᨫ + - ᨫ ࠢ + - + - ࠢ + - + - ॢ + + 䠩 뢠 ।񭭮 ⢮ +㫥 (0x00) ⮣, ⮡ ࠧ 䠩 ⥭ +512 ⠬. + + + ᪨ ஢ 室 ⠫ +contsamp. diff --git a/programs/games/kosilka/extra/kosilka.usf b/programs/games/kosilka/extra/kosilka.usf new file mode 100644 index 0000000000..59708fd75a --- /dev/null +++ b/programs/games/kosilka/extra/kosilka.usf @@ -0,0 +1 @@ +=S:N6K6I3}F6xH6xH1uB1uB1uB6xH6xH6xH6xH6xH1uB6xH6xH6xH3}F6K6K:N:N:N6K3}F1uB0j<0j<0j<0j<0j<0j<0j<0j<0j<0j<0j<0j<0j<0j<0j<0j<1uB6xH6K9M:N3}FMBhMhMnQgLdJdJbIdJdJdJdJ^FdJdJhMkOgLgLMB3}F:N6K1uBT?nQnQgLbIZCT?T?T?T?T?T?T?T?T?\EgLlPlPMB1uB6K6I1uB]GlPmQbIsvhU^\EhMnQT?1uB6I6I0jP9M:Nawfffemplimhpsomplimhuwuffeeidpsoeidac`imhimhimhknjhkgeidmplffeIyY=Q=Qgjfeidpsoac`hkgmplhkggjfmplmplknjimhhkgffehkgeidimheidimhuwuuwunug=S=Qeideideidmplmplpsopsoac`eidmplhkgknjhkguwumpleidimhmplhkgpsohkgeid=ST;Q>PawfeidknjmplgjfmplmplimheideidffemplknjknjeidmpleidmpleidawfIT=S>T>S;Q;Q?U>T?UT;Q@V=S>T=S@V?U=S=S>T;Q;Q;Q;Q=S=S>T=S=S?U@V=S>T=S@V;Q>T=S=ST?UT=SITawfgjfmpleidmpleidknjknjmpleideideidimhmplmplgjfmplknjeidawf>P=SPVB\UZSVP\UZSVPVPVPVPVPVPVPVPZSZSZSZS\UVB6I:N6K6xHMBmQnQnQnQnQnQnQnQnQnQnQnQnQnQnQnQmQmQT?6xH6K6K1uBT?lPnQnQnQnQnQnQnQnQnQnQnQnQnQnQnQnQmQ]G1uB6I3}F0jT;QTmplbcbmplhkgpsoZSnQnQnQlPkOhMdJ^FbIbI^FbIbIgLnQ0j<6xH?UgjfeidpsomplmplZSnQnQnQlPkOhNddddmmsbIhM0j<1uBTeideidmplmpleidVPnQnQnQkO^FVB7xCJhvT?dJ0j<1uB;QffeimhhkgknjpsoVPnQnQnQnQ^FVBl(W7xJUvT?dJ0j<1uB@VeideidknjimheidVPnQnQnQlPbIVBl(W7xCUhT?dJ0j<3}F=Smplac`hkghkgac`VPnQnQnQlPbIVBl(W7xCJUvT?dJ0j<6xH>TknjgjfuwuffeimhVPnQnQnQnQbIVBl(Wl(W7xCUhvT?bI0j<3}F=SknjeidmplhkgimhVPnQnQnQkObIVBl(Wl(W7xCJUhT?dJ0j<1uB@VeideideideidimhZSnQnQnQkOdJVBl(Wl(W7x7xCJUT?dJ0j<1uB?Umplknjimhimhknj\UnQnQnQlPdJ]G[;B[;BtCVtCVLhSx^\EhM0j<3}F=SeidimhmpleidhkgVPnQnQnQnQkOdJ^FZCT?ZCZCZC\EgLkO0j<1uB=SmplmplhkgimheidZSnQnQnQnQnQkOlPhMkOdJgLgLhMlPgL0j<3}F>Timhgjfpsouwumpl\UnQnQnQnQnQnQnQnQnQnQnQnQnQnQhM1uB6K=SawfeidimhuwueidVBMBT?T?PDPDPDPDPDPDPDPDT?T?MBT?6xH6K=S@MawfeidhkgIyY6K1uB1uB0j<1uB0j<0j<1uB0j<0j<0j<0j<0j<1uB1uB3}F6K9M;Q=S?U=S;Q=Q:N6K6K3}F3}F6I3}F3}F3}F3}F3}F6I6I6I6K:N:N:N:N:N:N6K6I6I6I3}F3}F3}F3}F3}F3}F3}F3}F6K6K:N=Q=S=S?U=S;Q9M6K3}F1uB1uB0j<0j<0j<0j<0j<1uB0j<0j<1uB3}F:N=Q?U[drzlimheidFT=S6K1uBMBMBT?T?PDPDPDPDPDPDPDPDPDPDRFVPeiduwuimhhkgawf=S6K1uBgLlPlPlPmQnQnQnQnQnQnQmQnQnQnQ\Umplpsomplgjfeid>T3}F0jT6xH0jT1uB0jT6I0jT@VTT=S@V@V@VT=S;Q>T>T?U=ST=ST?U>TT;Q>T;Q@VT;Q>T>T@V@V>T=S=S>T;QT>T=ST;Q?U?U@V=S>TT;Q?U;QT=S>T>T=S@V=S;Q=S;Q?U?U=STT=S?U?U@V>TT=S>T;QT;Q?U?U@V?U=S@V>TT;Q>TT=S=ST=S=S=S?U=S;Q=S@VT=S=ST=S?U;Q=S;Q;Q@V=S?U=S>T>T=S?U;Q>T=S=S=S>T>TT=S=S?U=S>T=S=S=S=S=ST=STT=S>T>T>T>T;Q;Q;Q>T@V=S?U=S?U;Q;QT@V;Q;Q;Q>T=S=S@VT>T;QT?U@V;Q>T=S@V=S=STTT?U;Q;QT>T;Q?U?U?U>T=S;Q=S@V>TTT@V>T>T>T=S?U=S@VT>T>TT=S>T=S@V@V?U?U=S=S?U;Q@V=S>TT=S=S=S@V?U?U=S;Q@V@V;Q@V=S>T@V?U;Q@V?U=S@V>T=S?U?U>T=S@V;Q=S?U>T=S?UT=S=S;Q;QT@VT=S;Q;Q;Q=S=ST@V=ST=S;QT?UT;Q@V=S>T=S@V?U=S=S>T=S=S;Q=I_m_mHV_mt€P^0jP:~E>P?R>R;Q=S@V;Q?U@V=ST;Q666;:;BCBJGHBCB;:;<<><<><<><<>;:;;:;666>P;P=S=S>T;Q>T;Q@V;Q666;:;JGHSRSWVWSRSSRSWVW[[[[[[^_^[[[WVWJGH<<>666666?U=S=S=S?U;Q@U666BCBOMMWVWWVWWVWWVW[[[[[[^_^aaabcbffejijbcbSRS;:;666;Q?U?U@V=S=S666BCBSRSWVWWVWWVWWVW[[[[[[^_^^_^bcbffejijmmmjij[[[<<>666>S>T=S?U=S666<<>JGHSRSWVWWVWWVWWVW[[[^_^^_^bcbffejijjijmmmmmmWVW;:;666=S>T?U@V666666BCBOMMSRSWVWWVWWVW[[[[[[^_^aaaffeffejijmmmmmmjijOMM666;P@V?U;Q=S666BCBSRSWVWWVWWVWWVWWVW[[[^_^aaabcbffejijmmmmmmmmm^_^;:;9M?U@V@V:N666OMMWVWWVWWVWWVWWVWWVW[[[[[[^_^bcbffejijjijmmmmmmjijBCB>P;Q=S@V666<<>SRSWVWSRSWVWWVWWVWWVWWVW[[[^_^aaabcbffejijjijmmmmmmBCB6xH?U>T=S666BCBSRSSRSWVWWVWWVWWVWWVWWVW[[[^_^^_^bcbffejijjijmmmmmmJGH@uN=S?U;P666BCBSRSSRSWVWWVWWVWWVWWVWWVWWVW[[[^_^aaabcbffejijjijjijOMM666=S=S;P666BCBSRSSRSWVWWVWWVWWVWWVWWVWWVW[[[[[[^_^bcbffeffejijjijSRS666=S;Q;Q666;:;OMMSRSSRSWVWWVWWVWWVWWVWWVWWVW[[[^_^aaabcbffejijjijWVW;:;=Q?U>T=Q666JGHSRSSRSSRSWVWWVWWVWWVWWVWWVW[[[[[[^_^aaabcbffejij[[[;:;:N=S@V:N666JGHSRSSRSSRSSRSSRSSRSWVWWVWSRSWVW[[[^_^^_^aaabcbffe[[[;:;=Q;Q;Q:N666JGHSRSSRSSRSSRSSRSSRSSRSSRSSRSWVW[[[[[[^_^^_^bcbbcbSRS666>R>T>T>R666BCBSRSSRSSRSSRSSRSSRSSRSSRSWVWSRSWVW[[[[[[^_^^_^^_^<<>666?U@V>T@U666<<>OMMOMMSRSSRSSRSSRSSRSSRSSRSWVWSRSWVW[[[[[[[[[BCB666>R>T=S@V@V:N;:;JGHSRSOMMSRSSRSSRSOMMJGHJGHSRSSRSWVWWVWOMMBCB;:;9M@V@V;Q@V=S=S666<<>OMMOMMOMMOMMOMMJGH<<><<>BCBBCBBCB<<>;:;666=Q>T=S?UP:N?U;Q;Q@V?U;Q;Q>T@VR666666;:;666666666;Q=S?U=S@U=ST=S;QT?U9M>P:N>R;Q@V=S>T=S@V?U=S=S>T=S=S;Q@VT;QEYD=ST;Q=SI{mBy7-VByC-V-4--VByCDI{mDCCCD=Q=S?U?RC7--1------1-V-V4--?7ByD?U@V?RBy------------------?C:N=S=QC?1------1--1------1By?R?U;QDBy?-----4?1-11-----1ByD?U?U?RBy41--1-11----------7C=Q?UBy----14-------------1?CD?----14------1111------V>P?----1441---171-------?D-V------1?1--4---------4=SD-V1----1??-11---------?;Q?RC?-----11----------14By;QDBy1-----------------11By?RC1----------------11--??RBy----------------141--1?RC7--1----4?--------1--??U>PBy?77---!B|2Yk2Yk1-------1??By=S?U?UEY?RC-V?-VD)e "S,!B|111?4--?ByD?U;Q?U=S?U?U=SDD>P=Q)e )e -ZHBy-VByCC??ByD9M>T=S=SP=Q@V?U;Q;Q>T?UU?U;Q:N:NT=S;QT?UT=S@V?U ",35); + kos_WriteTextToWindow(40,430,0x80, 0x66FF66, (char*)about11, 35); } @@ -438,9 +470,9 @@ void draw_window(void){ } } - kos_WriteTextToWindow(215, 200,0x80, 0xFFFFFF ,"롥 ஢ ( <1> <2>):",0); - kos_WriteTextToWindow(215, 220,0x80, 0xFFFFFF ,"1. ஥ ஢",0); - kos_WriteTextToWindow(215, 240,0x80, 0xFFFFFF ,"2. 譨 ஢",0); + kos_WriteTextToWindow(215, 200,0x80, 0xFFFFFF, (char*)level_select_1,0); + kos_WriteTextToWindow(215, 220,0x80, 0xFFFFFF, (char*)level_select_2,0); + kos_WriteTextToWindow(215, 240,0x80, 0xFFFFFF, (char*)level_select_3,0); }