From 8360b46e5feff7b1682f937f3bfc674ef9136f93 Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Sat, 29 May 2021 23:13:58 +0100 Subject: [PATCH] compile.php compiles m2_txt into m2_evt and m2_evact. Mission2 updated to load binaries. --- !TheEsc/!RunImage,ff8 | Bin 24804 -> 24952 bytes !TheEsc/c/Mission2 | 143 ++++++++++++++--------------- !TheEsc/compile.php | 204 ++++++++++++++++++++++++++++++++++++++++++ !TheEsc/m2_evact,ffd | Bin 0 -> 12000 bytes !TheEsc/m2_evt,ffd | Bin 0 -> 5600 bytes !TheEsc/m2_txt | 17 ++++ 6 files changed, 289 insertions(+), 75 deletions(-) create mode 100644 !TheEsc/compile.php create mode 100644 !TheEsc/m2_evact,ffd create mode 100644 !TheEsc/m2_evt,ffd create mode 100644 !TheEsc/m2_txt diff --git a/!TheEsc/!RunImage,ff8 b/!TheEsc/!RunImage,ff8 index 58d40d3e02d622b331b9fab786f39424288a9bc3..bdf357c315343de6ec07788ca1147c700c7e8e5c 100644 GIT binary patch delta 3661 zcmZu!3sjRw7M}Y<5&{I1K*CE17%{vw2qJ5J09A1XsXP>HwLl7VZR-Qkx_YcDSg>x@ zihEnN4{N$rkA2vdjdoS`oLXCK>&mV@Yu9RzN)rEWHLDe^RomL^_e*+U_iWCYf9_-E zn>%;zy)(J^A>BSoW+9wzrG*RO8*UapgAm_#)NC;yr?=4-DDPB7sXEbZ|oqK&S4O~Gm`Ly8-*{OlcjiKo+w#Nz2}9fY-$!4(HAXV zv`pal4KI=GG@f6RY?9i{$E8GVK30Gs-Y2+EvYN&OxH|N~Vx32HINc9&T2Q<;HK3Wr zr9pXgn%jeH+8&d*+yVH5d?4sF9pO#ER@%s&!IAU~cL!S%)|iA(0(MBjR#}~-Y`9%k z>7DL*kgZ@+S*VGVRgv^I=c;DXT5eZm&tRrC0fqb`|}^jiDQ89`}XLC7DaZtdb^* zo5Lp23GNKDW7qDm4C-ZFxQ*W8+;9uM&a=bqbd=li-M|OJGpL2#;qj`Kk>c`gCY=qY zr0J~G$fdgIgxW~qi-bQ^_x#f)2g5&V@J;jMFU{drT{Knji@Isr0?h9B^(9>n%t?r_ zDn5y@kb@l&bJbetSGf6TL^|E&D-qFji&aB%=rWHRvOy9T_}GxOw1=nb?b>dm=!zS% z*>i?l^(AzSd-U5tW4tj! z#6=o-PjoR|4sp4g0u@8}V_`r#fSHp!AmLf_ik2bsX}Xpy%L zh3;^=mE)>W=z@N^(C?5R;@r4zBMyEo#DrcUt|37dT;S~ZbSYf#s)@f(6|vxg5bL4Z zg|o3$}PqEV0O^G3MF8oVN03dR29>S9Hst51PC69^EY$ z20PsZ-Ep3sQk%BCAI1Gjs6|c^9rBZZE%O`^^ImV-JNL|6gJw7Jxs-T%jqjw`Ms9<= zSkcuvy;SD(28nWSR9)K_QDtr2nPqMA=D@rL1UHJvh#X{L>j*0?$2Xe)GGbXoWnhF7 z{xLe9WP1+h(_^cpFL`9@N6J~H+7V~TX+C;`b?Fx<)paF(yo4}I8<~TEd3fY4!?rLK zF8D<`Hx+Om;KosNr3t-!bktcO?6BMDx~to+k*LYlGdhfDB%jHiDJ6t*dQMTCCRB7i z{gdCf+3)w&p}+Z~-xq$@?~4oNXLG*Su0TZn#<8$*H0z4u=`imeldtPqJD|Wjco_K+zC=E}_uQLCv z7F{O_5cc}#Wue6geT!_=@SFKZLzN&@f)RnZyx{Db&?KifOTSYN7OgUcDrZ&T2>~sV zTIHd*S@fW5B3e8Y+TuaP$>B*mL(0vF@9VWfoZ}jmqkFweabiUXZJM zsy#_!p4BA8OYdLz`!vvttQX`U6t$W}L|QlpP-Iw=4MXDwNy!?~wrm>M8~dI20^xOl3@C)h(@TXJ`;I{_wRk~_# z6!5j&Iwdmv2S^pf!sbQ?_K?FjCa0-ufUGyLGx3z9CQlk zV9;97Sqcvq^z`|C)3Dg~0%Qb|a|-C^ptC}ko#gbI^*EoQt)9Mb{k~+#R@Zv~64W`LQo!24Jnu5Db7r|`WV zY0s%8nL1w(60QywmN~u4*ijOVC+EtNCrDzsq(1i@MGFn8lUKAjy$etiGFy(x& zf&D4Ro+xhBZ8(5nRW!`Am|1YQI)@<_}W~!T$0TT*xUE<43oZAV`r6r-GEeMIH|nCDZ0y z_4~F@v&b>f6~;K-arh%s5aM*N;4KxArX5%OzLUZt|B?=V>L4^u{biV-&;{e*S1^NqK0ef46iDUS(JW+YMTcGb*2O2)HTED^3) z=vY+SD1@kRb9VJ4>1Q7|SEs99_xZzO__gYKb-RPa{PP?-XB{1IZJAR^MIWEV=D!l6 zsgA_PdV=%%`T1B$;ZH3hnBw=hv-dTtwU4_RYFecK0An+m)Bpeg delta 3683 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 Z#Y1@%z1Ml%;Bl*$2C9}jZY*vR{s)nhwgdnG diff --git a/!TheEsc/c/Mission2 b/!TheEsc/c/Mission2 index a0ec12b..f399356 100644 --- a/!TheEsc/c/Mission2 +++ b/!TheEsc/c/Mission2 @@ -97,91 +97,83 @@ struct Event_s { }; struct Event_s Events[MAXEVENTS]; -void game2_loadevents() +void game2_saveevents(char* filename) { - int i; - for(i = 0; i sizeof(Events)) { - // Default to Triggered with no re-arm so event never fires - sprintf(Events[i].Name,"INVALID"); - Events[i].Triggered = 1; - Events[i].RearmDelay = -1; - Events[i].NextRearm = -1; - } - for(i = 0; i sizeof(EventActions)) + { + screen_nobuffer(); + while (1) + printf("EventActions exceeds %d bytes (%d bytes) object type is %d\n",sizeof(EventActions),length,outreg.r[0]); + } - // SBBR-DOOROPEN - EventActions[i].Event = 1; - EventActions[i].Action = 0; - EventActions[i].ActionValue = 31; - EventActions[i].ActionTarget = 713; - i++; - EventActions[i].Event = 1; - EventActions[i].Action = 2; - EventActions[i].ActionValue = PCMSAMPLE_DOOR; - EventActions[i].ActionTarget = PCMCHANNEL_AMBIENT; - i++; - EventActions[i].Event = 1; - EventActions[i].Action = 3; - EventActions[i].ActionTarget = 2; - i++; - - // SBBR-DOORCLOSE - EventActions[i].Event = 2; - EventActions[i].Action = 0; - EventActions[i].ActionValue = 29; - EventActions[i].ActionTarget = 713; - i++; - EventActions[i].Event = 2; - EventActions[i].Action = 2; - EventActions[i].ActionValue = PCMSAMPLE_DOOR; - EventActions[i].ActionTarget = PCMCHANNEL_AMBIENT; - i++; - EventActions[i].Event = 2; - EventActions[i].Action = 3; - EventActions[i].ActionTarget = 1; - i++; + // Attempt to get file info + inreg.r[0] = 16; + inreg.r[1] = (int) filename; + inreg.r[2] = (int) EventActions; + inreg.r[3] = 0; + _kernel_swi(OS_File,&inreg,&outreg); } void game2_loadsmarttiles(char* filename) @@ -382,7 +374,8 @@ void game2_setup() game2_loadsmarttiles("m2_smart"); game2_loadareanames("m2_areas"); game2_setup_audio(); - game2_loadevents(); + game2_loadevents("m2_evt"); + game2_loadeventactionss("m2_evact"); game2_fillmap(TilePlayer.mapoffset.X,TilePlayer.mapoffset.Y); } diff --git a/!TheEsc/compile.php b/!TheEsc/compile.php new file mode 100644 index 0000000..c26c89e --- /dev/null +++ b/!TheEsc/compile.php @@ -0,0 +1,204 @@ +$csv[1],"Triggered"=>$csv[2],"RearmDelay"=>$csv[3],"NextRearm"=>$csv[4]); + break; + case "Event": + $csv = str_getcsv($split[1]); + $inevent = -1; + foreach($events as $eventid=>$event) + { + if($event['Name'] == $csv[0]) + $inevent = $eventid; + } + if($inevent < 0) + echo " Unknown event: " . $csv[0] . "\n"; + break; + case "AreaName": + if($inevent < 0) + { + echo " Invalid outside event\n"; + } + else + { + $csv = str_getcsv($split[1]); + $eventactions[] = array("Event"=>$inevent,"Action"=>1,"ActionValue"=>$csv[0],"ActionTarget"=>-1); + } + break; + case "Sound": + if($inevent < 0) + { + echo " Invalid outside event\n"; + } + else + { + $csv = str_getcsv($split[1]); + $eventactions[] = array("Event"=>$inevent,"Action"=>2,"ActionValue"=>$csv[1],"ActionTarget"=>$csv[0]); + } + break; + case "SetTile": + if($inevent < 0) + { + echo " Invalid outside event\n"; + } + else + { + $csv = str_getcsv($split[1]); + $eventactions[] = array("Event"=>$inevent,"Action"=>0,"ActionValue"=>$csv[1],"ActionTarget"=>$csv[0]); + } + break; + case "ReArm": + if($inevent < 0) + { + echo " Invalid outside event\n"; + } + else + { + $csv = str_getcsv($split[1]); + + $target = -1; + foreach($events as $eventid=>$event) + { + if($event['Name'] == $csv[0]) + $target = $eventid; + } + + if($target < 0) + echo " Unknown target: " . $csv[0] . "\n"; + else + $eventactions[] = array("Event"=>$inevent,"Action"=>3,"ActionValue"=>255,"ActionTarget"=>$target); + } + break; + default: + echo " Unknown command: " . $split[0] . "\n"; + } + } + + $fp = fopen('m2_evt,ffd', 'w'); + foreach($events as $event) + { + fwrite($fp, $event['Name']); + $pad = 16 - strlen($event['Name']); + while($pad > 0) + { + $pad --; + fwrite($fp, "\0"); + } + + if($event['Triggered'] == 1) + fwrite($fp, "\1"); + else + fwrite($fp, "\0"); + $pad = 3; + while($pad > 0) + { + $pad --; + fwrite($fp, "\0"); + } + + // TODO: ReArm stuff + $pad = 8; + while($pad > 0) + { + $pad --; + fwrite($fp, chr(255)); + } + } + + $blanks = 200 - count($events); + while($blanks > 0) + { + $blanks --; + fwrite($fp, "INVALID"); + + fwrite($fp, chr(0)); + fwrite($fp, chr(0)); + fwrite($fp, chr(0)); + fwrite($fp, chr(0)); + fwrite($fp, chr(0)); + + fwrite($fp, chr(0)); + fwrite($fp, chr(0)); + fwrite($fp, chr(0)); + fwrite($fp, chr(0)); + + fwrite($fp, chr(1)); + fwrite($fp, chr(0)); + fwrite($fp, chr(0)); + fwrite($fp, chr(0)); + + fwrite($fp, chr(255)); + fwrite($fp, chr(255)); + fwrite($fp, chr(255)); + fwrite($fp, chr(255)); + + fwrite($fp, chr(255)); + fwrite($fp, chr(255)); + fwrite($fp, chr(255)); + fwrite($fp, chr(255)); + } + fclose($fp); + + $fp = fopen('m2_evact,ffd', 'w'); + foreach($eventactions as $eventaction) + { + fwrite($fp, pack('V', $eventaction['Event'])); // Event + + fwrite($fp, chr($eventaction['Action'])); // Action + fwrite($fp, chr($eventaction['ActionValue'])); // ActionValue + + fwrite($fp, chr(0)); // PAD + fwrite($fp, chr(0)); // PAD + + fwrite($fp, pack('V', $eventaction['ActionTarget'])); // Event + } + + $blanks = 1000 - count($eventactions); + while($blanks > 0) + { + $blanks --; + fwrite($fp, chr(255)); // Event + fwrite($fp, chr(255)); + fwrite($fp, chr(255)); + fwrite($fp, chr(255)); + + fwrite($fp, chr(255)); // Action + fwrite($fp, chr(255)); // ActionValue + + fwrite($fp, chr(0)); // PAD + fwrite($fp, chr(0)); // PAD + + fwrite($fp, chr(255)); // ActionTarget + fwrite($fp, chr(255)); + fwrite($fp, chr(255)); + fwrite($fp, chr(255)); + } + fclose($fp); +?> \ No newline at end of file diff --git a/!TheEsc/m2_evact,ffd b/!TheEsc/m2_evact,ffd new file mode 100644 index 0000000000000000000000000000000000000000..5746e1f2011ccadacab00ec35eeb7c0f8753315b GIT binary patch literal 12000 zcmeIw(FuSs3ahX4Qo literal 0 HcmV?d00001 diff --git a/!TheEsc/m2_evt,ffd b/!TheEsc/m2_evt,ffd new file mode 100644 index 0000000000000000000000000000000000000000..01a70a33658be2227c397008b34cf43dd3e6ffd9 GIT binary patch literal 5600 zcmeH~p$>o`6h-la{0I>O8v_QLonSLDieIlXA=%95)w>bixQ9bH^0}8(bE#s?)h9_A zXXSnLLAxG)veo*eg_xdvWX5faHEJA3))&KGxD%}ubmc7seV`BYfp@df02aUkSO5!P Z0e`2)fi`$Do{SgZ1+V}wzzhC)!40MJ)`|cC literal 0 HcmV?d00001 diff --git a/!TheEsc/m2_txt b/!TheEsc/m2_txt new file mode 100644 index 0000000..20f43fb --- /dev/null +++ b/!TheEsc/m2_txt @@ -0,0 +1,17 @@ +AddEvent(0,"PlayerStart",0,-1,-1) +AddEvent(1,"SBBR-DOOROPEN",0,-1,-1) +AddEvent(2,"SBBR-DOORCLOSE",1,-1,-1) + +Event("PlayerStart") + AreaName(1) + Sound(8,4) + +Event("SBBR-DOOROPEN") + SetTile(713,31) + Sound(8,5) + ReArm("SBBR-DOORCLOSE") + +Event("SBBR-DOORCLOSE") + SetTile(713,29) + Sound(8,5) + ReArm("SBBR-DOOROPEN")