From 207b7a6bd528e78546ec04cfde07f0108f8d9029 Mon Sep 17 00:00:00 2001 From: ABelliqueux Date: Thu, 29 Apr 2021 18:46:10 +0200 Subject: [PATCH] first commit --- Makefile | 41 +++ Overlay.ovl0 | Bin 0 -> 2256 bytes Overlay.ovl1 | Bin 0 -> 2192 bytes OverlayExample.bin | Bin 0 -> 2591904 bytes OverlayExample.cue | 3 + README.md | 56 ++++ TIM/cubetex.tim | Bin 0 -> 32788 bytes config/OverlayExample.cnf | 4 + config/OverlayExample.xml | 22 ++ cubetex.c | 136 ++++++++ cubetex.h | 34 ++ isotest.sh | 3 + overlay.ld | 44 +++ ovl-upload.c | 440 ++++++++++++++++++++++++++ ovl-upload.ps-exe | Bin 0 -> 86016 bytes ovl-upload.py | 633 ++++++++++++++++++++++++++++++++++++++ ovl.gif | Bin 0 -> 66199 bytes ovly-upload-helper.sh | 9 + tritex.c | 84 +++++ tritex.h | 33 ++ 20 files changed, 1542 insertions(+) create mode 100644 Makefile create mode 100755 Overlay.ovl0 create mode 100755 Overlay.ovl1 create mode 100644 OverlayExample.bin create mode 100644 OverlayExample.cue create mode 100644 README.md create mode 100644 TIM/cubetex.tim create mode 100644 config/OverlayExample.cnf create mode 100644 config/OverlayExample.xml create mode 100644 cubetex.c create mode 100644 cubetex.h create mode 100755 isotest.sh create mode 100644 overlay.ld create mode 100644 ovl-upload.c create mode 100755 ovl-upload.ps-exe create mode 100755 ovl-upload.py create mode 100644 ovl.gif create mode 100755 ovly-upload-helper.sh create mode 100644 tritex.c create mode 100644 tritex.h diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..418bfe2 --- /dev/null +++ b/Makefile @@ -0,0 +1,41 @@ +TARGET = ovl-upload +TYPE = ps-exe + +SRCS = ovl-upload.c \ +TIM/cubetex.tim \ +../common/crt0/crt0.s \ +tritex.c \ +cubetex.c \ + + +OVERLAYSCRIPT ?= overlay.ld +OVERLAYSECTION ?= .ovl0 .ovl1 + +CPPFLAGS += -I../psyq/include +LDFLAGS += -L../psyq/lib +LDFLAGS += -Wl,--start-group +LDFLAGS += -lapi +LDFLAGS += -lc +LDFLAGS += -lc2 +LDFLAGS += -lcard +LDFLAGS += -lcomb +LDFLAGS += -lds +LDFLAGS += -letc +LDFLAGS += -lgpu +LDFLAGS += -lgs +LDFLAGS += -lgte +LDFLAGS += -lgun +LDFLAGS += -lhmd +LDFLAGS += -lmath +LDFLAGS += -lmcrd +LDFLAGS += -lmcx +LDFLAGS += -lpad +LDFLAGS += -lpress +LDFLAGS += -lsio +LDFLAGS += -lsnd +LDFLAGS += -lspu +LDFLAGS += -ltap +LDFLAGS += -lcd +LDFLAGS += -Wl,--end-group + +include ../common.mk \ diff --git a/Overlay.ovl0 b/Overlay.ovl0 new file mode 100755 index 0000000000000000000000000000000000000000..a7982cfd490e271b51757794a75b5a21e799da37 GIT binary patch literal 2256 zcmeHIJ5B>Z4D~VzDWFOsaR9oh5j|&EYA!%ag|yNfDhJ6SAfm`}0i+l|d*0?lL%Y&i z^1Su)XPzdqvi(fu!~FR>m4`l+%~vXKyHsu^?8+dSFU;rWv+9i@3><0@15t;17`{;t zJI!BP%vnI>fZ#C$j&JnCc)zNOyZi*s7lD&+QI^s%34 zvoQzva@ONh=m>SwIhGe_rFE&DWXHB*SNT@Dnh$I$pDUj)V$M7Au@z07n+J@0$#X9I zc|UbAW}dp(*9>|>C-t$8ec3k)`*o=+^iUsljpcWobWSfY))%n95jSjPY$d{Anfsdw k=0Ej5e5A)(RFR1{T?f?J) literal 0 HcmV?d00001 diff --git a/Overlay.ovl1 b/Overlay.ovl1 new file mode 100755 index 0000000000000000000000000000000000000000..4df9ca1295a4b154f1d6eb2c4302c2510b91fdf0 GIT binary patch literal 2192 zcmeH_O$x#=5QQhkDioIm?+`pr*Dkx!69|QzqKlr&L#Vh2(oMIHc}b>4Hy$7zn11t@ z33>E-*Y@Up_tMrmZO>0_4-aiOM6~w4@~*tYkRt}QcjhR*4+Q2r^q`D##>MG^){P#KOtLc2)XHqWv>$JzDKVMCZ v_hcsj^4vv%+!YugKr?nlGe-6$QD1h25cPbm3Qw=dF(S}0g|9G9{8#7$?Fd{u literal 0 HcmV?d00001 diff --git a/OverlayExample.bin b/OverlayExample.bin new file mode 100644 index 0000000000000000000000000000000000000000..c62c23b344c51910010a2989d29d8b10579fae1d GIT binary patch literal 2591904 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 N4*u=nKmY&5{{b~&waNeh literal 0 HcmV?d00001 diff --git a/OverlayExample.cue b/OverlayExample.cue new file mode 100644 index 0000000..8ed26d4 --- /dev/null +++ b/OverlayExample.cue @@ -0,0 +1,3 @@ +FILE "OverlayExample.bin" BINARY + TRACK 01 MODE2/2352 + INDEX 01 00:00:00 diff --git a/README.md b/README.md new file mode 100644 index 0000000..77c88b2 --- /dev/null +++ b/README.md @@ -0,0 +1,56 @@ +# Ovl-upload : On-demand Overlay uploading on the PSX + +![In action!](ovl.gif) + +This example code demonstrates how to use the companion 'ovl-upload.py' script that should be provided with this file. + +Once the code is loaded on a unirom enabled PSX via a serial/USB cable, 'ovl-upload.py' listens for a specific command + +to load an overlay file on demand. + +For an explanation about overlays, see [http://psx.arthus.net/sdk/Psy-Q/DOCS/TRAINING/FALL96/overlay.pdf](http://psx.arthus.net/sdk/Psy-Q/DOCS/TRAINING/FALL96/overlay.pdf) + +For a basic example see @JaberwockySeamonstah's [https://github.com/JaberwockySeamonstah/PSXOverlayExample](https://github.com/JaberwockySeamonstah/PSXOverlayExample) + +# Thanks + +@JaberwockySeamonstah, @JonathanDotCel, @nicolasnoble, @Lameguy64 for their help and patience. + +## Set-up + +* You need to set up the Nugget+PsyQ SDK, as described here : [https://github.com/ABelliqueux/nolibgs_hello_worlds](https://github.com/ABelliqueux/nolibgs_hello_worlds) +* Clone this repo. +* Get [Unirom](https://github.com/JonathanDotCel/unirom8_bootdisc_and_firmware_for_ps1/) + [NotPSXserial](https://github.com/JonathanDotCel/NOTPSXSerial). +* Get [mkpsxiso](https://github.com/Lameguy64/mkpsxiso). +* With your PSX on at the unirom prompt, serial/USB cable plugged, upload the default data at the right address : + +```bash +# We need debug mode for runtime data uploading + +nops /debug /dev/ttyUSB0 + +nops /fast /bin 0x8003e5c8 Overlay.ovl0 + +nops /fast /exe ovl-upload.ps-exe + +nops /slow +``` + +You should see a cube on a blue background. + +* In a terminal/cmd, launch the python script `./ovl-upload.py`. You should see a message : `Listening for incoming data...` + +* Push the **select** button on your controller. The cube should change shape ! In reality, we are loading the geometry data from another file : `Overlay.ovl1` + +Alternativly, you can use the bin/cue in an emulator or xstation. + +Helper scripts are provided for convenience and are dependent on `pcsx-redux` and `mkpsxiso` being in your $PATH. + +* `isotest.sh` will make, build the bin/cue, and open the resulting image in pcsx-redux. +* `ovly-upload-helper.sh` is a small wrapper for `nops`, hence depending on it being in your $PATH that takes args : load address, +overlay filename, ps-exe filename and optional comport/serialdevice - e.g : + +```bash +# make && +./ovly-upload-helper.sh 0x8003e5c8 Overlay.ovl0 ovl-upload.ps-exe /dev/ttyUSB0 +``` diff --git a/TIM/cubetex.tim b/TIM/cubetex.tim new file mode 100644 index 0000000000000000000000000000000000000000..a55697eaa1e213021d160813088735b601061540 GIT binary patch literal 32788 zcmeI4Uu+b|9mh$Kij)LW)m9(|e2NjE7zILHAlS7n1qq}e)saC#VA*HK57)@D+;G52 zx${kw@Q}V%O0X2bPf1i>(@4Q!?`vpZgVe&A1wzvBr-_;n{uypNGr#%W&fd<D+WK ze)`^}@zbw~RE%3`6{}bCB!j1!LYgw!||Blf&4!xK^P0I9`CVTUL zJ@ofcbFJF(uVeN2@4GTqj`h*X4U8P?J-X3cD@^=5BIx7be`Ws#Zb`5we(ufx$zTIB z$=r$y`>-APJTTJttiEPY{)6jE!)~il{r|-wx2;(+D_LTeoX}c8PchZF{F%wD+oqKR z4M2&V*Q=lwe>U}A+h;pxN1&xLS5{R2_w0w(E|5R&&v4r9ql@?F^HBOhUN;I%`~#wg zU74dB&n;tbo?CWwV^;>+v~uTpnZE@Se|8nr#?R6)j({ls-#!Y;zd-)t@${P4_X-Ov z-mkWRzxP;jzZ3d6{VJB=xjX<*?ssB|_Z*bJH1d8&@6sb3&{`CJ^!_V8$`hl|`q@Ka z`N7Xt4m>XtcC6M}2HrCAr)I}WnW?@b-Pu(T@8jTK%Dr4B+dbX~Vo=5w%?OaWyw_cs z$*h(0d!M~!!_OP=*1$UxzkiO4ga3;|`{=B^gZp3RFAwCOb6Hha4+H;+QHc8v>G96I=DutDiombBR^T+>gCFbe!ooXA@B2_;xZG{X_9R=o# zA7fsbtgkWZT`Q>hrW#Lg>dKHYJFkxQ`R9QDciUC<=ZF8qDC~Iz8TGaKk8T7)^%y_B z37)D~!1KZXu9)wp4Y`g>?Ov(;$I8wvgE+5R|4uc|id`|aI_87_O&;|w7&&KrTpJ=#D`z)I&<;C|o0NNFoZ`uua#uYz41qE>&c z`M;Ez9g~l;*kgQWyB4 znvL^pR&sq$6a6RpkFIuq3vucm+p16D=30sV6aB9&#D7=|<3Ab-@gGe8@zbv?#7}Q6 zjGw-tknkt|PxK$Z1%A2Xzq3HZ4p!&5-fkv-M|@Y!-J|hbjp^zJiGRBb6XW-bMPk#V zNKO^^jGJqPkAE{o>}}or(l-^cE$JMAKQ}%jeB-v)Pd+uwn_>BnkGn0`%@4bZS*ioo z(O0kk?@E0;PW_KPogwdOEf9`>y5P3zkh=MK&+IKaPF=ZK$rFOUNKo_d74kx>okUkR z9DkbkyexiFo&1l3U+fJ!PF=Z5;?4DW?K~GWQ{3Wjb zvxR-delkOBa-5WkpN+RwMFejvLHHl=c-Kuwek}amoIgj|xu!gy8EdJ|`=<48k+;-d zY%9FUEg`pgoaka7vqWwF{=y_}-6qE>yCf0)zeDaFz0Pt4pe^!x6?i=--&wr&(?!sM zO(Xt&ssZ=s5J?>(c4{BPsCoDms!4pdJY}&)ic09#LRF? zGc%g`A>U1t&WiS#1)}+1&BjX?(Xqf)Yboajnb>=c{FwR5Pgja@(58%oCjQPsn%1?+ zw1@sDoa2>!JyE6G&eYnwCL%K7gzp@3VV`HOt?9G6CZ9Qs$0RmxJpuU;E@ndLi( z|NTn-TOwOmX~P`(s{M!^7$J}^JX#NyYA88R$(&D-7cf3~lkC&}-`shrTvr?)z z?47``&VpoO?=|{ZrE#=P^~?Y*nEa0{)#pg@9~Hhw!T-3E=log4GdhmE%-%c5c2xTu z5F3swV}p78S99ZiB>sht_?ui`j9Wz40uaZQqufREkIm!$T(?JL~|tL zJFoEViODtRiJxT!>+Bvj6VN^~4fN4DU+ei`{EX{tp}p8i*8xle{bZkZ-w$n24?o61 z(;0dk?rQtDgJ}$KYn`Wk@)E^lKANdn-c!S|B3$Nx4L zd{3aZj$yFr#!EnYB;y_L*Snzn{b60*`uMFESi5#E^;mfRn}X8yJ=*4qc=CN{e(-)d z|Mr?{PSk)-0rl{AFR}UW>8$lSdQ<*;n^Vpy8NpjWDxc}|-=P+$m+h;jA8dMO4Lo~t zr~er%sfQo5PlomMCVue$0|n!yI{p7)D=;qJp<+DAf3J2Vqk2{k|D>>J`l7Y-3q4W`@!I4_S{x(oIqLFHvUZ^D_Cj6ag>MJ6HqUlS+f?pT@w}S)P-ymS=M( zN6_ylM=%F`C-V58g(`mVJ%ReNZvEGXTTuh-ll@rzS+} zT#t?aHL*6>5HbI!Ugw^pDhM$8_59a_|J8(O9kn`w`P=)}2Jwy3sOvwv*5f^&Y>CGI zmEgar^f2y_6D__8Qm+n$WC%g6DrJkzsUeSNvYP$Yb7n zeNR|GAOCebKr*rS`b;}`=lLGFe5iRseAg6n0{JOi2Oa+;&3*#Segmmrum6h#$GCU? zzeui&Re?kNmH`X;d+(Ou+}FDY=lL`3ZkhXD^;J-QSoKXB*Zi_=ygv8deJ2#)=6|;< z`=1WYgS>CMch!BD?>}1a{$G`|xl?ow1VuRHV7hu#$n}Eq+q^x}Co`I^-CnD%u2yz{ zv6pb3qv}w-4`p({{nsDAP^#qm*lL;3xNrOoKu~^YQNQ0=Z3{gGKDkO)0e89P%k=Xu zy)&`1T7KrLlI9yP9UMN-eP7B>WR~p2u~79MUH9S`;8oM-HFoacl;`TaL) zHqLXLy2rNS)IGM9=s(eaoVv%hP_uEKQL}NL6a6RpN6p50j#Ky8R-C%WwwV5t + + + + + + + + + + + + + diff --git a/cubetex.c b/cubetex.c new file mode 100644 index 0000000..887ba55 --- /dev/null +++ b/cubetex.c @@ -0,0 +1,136 @@ +#include "cubetex.h" + +SVECTOR modelCube_mesh[] = { + {20.0,19.999998807907104,-20.0}, + {20.0,-20.0,-20.0}, + {-20.00000238418579,-19.999996423721313,-20.0}, + {-19.999992847442627,20.000007152557373,-20.0}, + {20.000009536743164,19.99998927116394,20.0}, + {19.99998688697815,-20.000011920928955,20.0}, + {-20.000007152557373,-19.999992847442627,20.0}, + {-19.999998807907104,20.0,20.0} +}; + +SVECTOR modelCube_normal[] = { + 0.0,-0.0,-1.0,0, + 0.0,0.0,1.0,0, + 1.0,0.0,-2.384185791015625e-07,0, + -8.940696716308594e-08,-1.0,-2.9802325229866256e-07,0, + -1.0,2.384185791015625e-07,-1.4901158351676713e-07,0, + 2.6822084464583895e-07,1.0,2.3841852225814364e-07,0, + 0.0,0.0,-1.0,0, + 0.0,-0.0,1.0,0, + 1.0,-5.662441253662109e-07,3.2782537573439186e-07,0, + -4.768372150465439e-07,-1.0,8.940690321423972e-08,0, + -1.0,2.0861631355728605e-07,-1.1920931797249068e-07,0, + 2.0861631355728605e-07,1.0,1.7881397695873602e-07,0 +}; + +SVECTOR modelCube_uv[] = { + 83.71398162841797,83.71389770507812, 0, 0, + 125.03179168701172,42.396141052246094, 0, 0, + 83.71398162841797,42.396141052246094, 0, 0, + 125.03179168701172,83.71392059326172, 0, 0, + 83.71398162841797,125.03166770935059, 0, 0, + 125.03179168701172,125.03169059753418, 0, 0, + 1.0784510374069214,83.71392059326172, 0, 0, + 42.39619445800781,125.03169059753418, 0, 0, + 42.39621353149414,83.71392440795898, 0, 0, + 42.39621353149414,125.03166770935059, 0, 0, + 83.71398162841797,83.71392440795898, 0, 0, + 42.39621353149414,83.71390151977539, 0, 0, + 42.39619445800781,1.0783309936523438, 0, 0, + 1.0784281492233276,42.39611053466797, 0, 0, + 42.39619445800781,42.39612579345703, 0, 0, + 42.39619064331055,83.71392059326172, 0, 0, + 1.0784281492233276,42.396141052246094, 0, 0, + 1.0784281492233276,83.71392059326172, 0, 0, + 83.71398162841797,83.71389770507812, 0, 0, + 125.03179168701172,83.71390151977539, 0, 0, + 125.03179168701172,42.396141052246094, 0, 0, + 125.03179168701172,83.71392059326172, 0, 0, + 83.71399688720703,83.71392440795898, 0, 0, + 83.71398162841797,125.03166770935059, 0, 0, + 1.0784510374069214,83.71392059326172, 0, 0, + 1.0784281492233276,125.03169059753418, 0, 0, + 42.39619445800781,125.03169059753418, 0, 0, + 42.39621353149414,125.03166770935059, 0, 0, + 83.71398162841797,125.03169059753418, 0, 0, + 83.71398162841797,83.71392440795898, 0, 0, + 42.39619445800781,1.0783309936523438, 0, 0, + 1.0784281492233276,1.0783309936523438, 0, 0, + 1.0784281492233276,42.39611053466797, 0, 0, + 42.39619064331055,83.71392059326172, 0, 0, + 42.39619445800781,42.396141052246094, 0, 0, + 1.0784281492233276,42.396141052246094, 0, 0 +}; + +CVECTOR modelCube_color[] = { + 255,255,255, 0, + 255,255,255, 0, + 255,0,251, 0, + 255,255,255, 0, + 255,5,7, 0, + 255,255,255, 0, + 255,255,255, 0, + 255,255,255, 0, + 4,18,255, 0, + 255,5,7, 0, + 255,255,255, 0, + 255,255,255, 0, + 254,255,23, 0, + 122,255,107, 0, + 255,255,255, 0, + 255,255,255, 0, + 255,255,255, 0, + 254,255,94, 0, + 255,255,255, 0, + 35,255,11, 0, + 255,255,255, 0, + 255,255,255, 0, + 255,255,255, 0, + 255,5,7, 0, + 255,255,255, 0, + 255,5,7, 0, + 255,255,255, 0, + 255,5,7, 0, + 255,255,255, 0, + 255,255,255, 0, + 254,255,23, 0, + 255,255,255, 0, + 122,255,107, 0, + 255,255,255, 0, + 54,65,255, 0, + 255,255,255, 0 +}; + +int modelCube_index[36] = { + 0,2,3, + 7,5,4, + 4,1,0, + 5,2,1, + 2,7,3, + 0,7,4, + 0,1,2, + 7,6,5, + 4,5,1, + 5,6,2, + 2,6,7, + 0,3,7 +}; + +TMESH modelCube = { + modelCube_mesh, + modelCube_normal, + modelCube_uv, + modelCube_color, + 12 +}; + +MESH Cube = { + + &modelCube, + + modelCube_index + + }; diff --git a/cubetex.h b/cubetex.h new file mode 100644 index 0000000..0c613e4 --- /dev/null +++ b/cubetex.h @@ -0,0 +1,34 @@ +#pragma once + +#include +#include +#include + +#ifndef custom_types + +typedef struct MESH { + + TMESH * tmesh; + + int * index; + + } MESH; + +#define custom_types + +#endif + + +extern SVECTOR modelCube_mesh[8]; + +extern SVECTOR modelCube_normal[36]; + +extern SVECTOR modelCube_uv[144]; + +extern CVECTOR modelCube_color[144]; + +extern int modelCube_index[]; + +extern TMESH modelCube; + +extern MESH Cube; diff --git a/isotest.sh b/isotest.sh new file mode 100755 index 0000000..ce4bdb4 --- /dev/null +++ b/isotest.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +make && mkpsxiso -y config/OverlayExample.xml && pcsx-redux -run -iso OverlayExample.cue diff --git a/overlay.ld b/overlay.ld new file mode 100644 index 0000000..9e43f05 --- /dev/null +++ b/overlay.ld @@ -0,0 +1,44 @@ +__heap_base = MAX(__ovl0_end, __ovl1_end); + +SECTIONS { + OVERLAY __bss_end : NOCROSSREFS SUBALIGN(4) + { + .ovlload + { + load_all_overlays_here = .; + } + .ovl0 + { + KEEP(cubetex.o(.text)) + __ovl0_ctor = .; + KEEP(cubetex.o(.text.startup._GLOBAL__*)) + KEEP(cubetex.o(.text.*)) + KEEP(cubetex.o(.rodata*)) + KEEP(cubetex.o(.sdata*)) + KEEP(cubetex.o(.data*)) + KEEP(cubetex.o(.sbss*)) + KEEP(cubetex.o(.bss*)) + KEEP(cubetex.o(.ctors)) + + . = ALIGN(4); + __ovl0_end = .; + } + + .ovl1 + { + KEEP(tritex.o(.text)) + __ovl1_ctor = .; + KEEP(tritex.o(.text.startup._GLOBAL__*)) + KEEP(tritex.o(.text.*)) + KEEP(tritex.o(.rodata*)) + KEEP(tritex.o(.sdata*)) + KEEP(tritex.o(.data*)) + KEEP(tritex.o(.sbss*)) + KEEP(tritex.o(.bss*)) + KEEP(tritex.o(.ctors)) + + . = ALIGN(4); + __ovl1_end = .; + } + } +} diff --git a/ovl-upload.c b/ovl-upload.c new file mode 100644 index 0000000..b194119 --- /dev/null +++ b/ovl-upload.c @@ -0,0 +1,440 @@ + +/* ovl-upload.c, by ABelliqueux, 04-2021 license GNU General Public License v3.0 + + This example code demonstrates how to use the companion 'ovl-upload.py' script that should be provided with this file. + + Once the code is loaded on a unirom enabled PSX via a serial/USB cable, 'ovl-upload.py' listens for a specific command + + to load an overlay file on demand. + + For an explanation about overlays, see http://psx.arthus.net/sdk/Psy-Q/DOCS/TRAINING/FALL96/overlay.pdf + + For a basic example see @JaberwockySeamonstah's https://github.com/JaberwockySeamonstah/PSXOverlayExample + + Unirom can be found here : https://github.com/JonathanDotCel/unirom8_bootdisc_and_firmware_for_ps1 + + with it's companion pc side software : https://github.com/JonathanDotCel/NOTPSXSerial + + Thanks to @JaberwockySeamonstah, @JonathanDotCel, @nicolasnoble, @Lameguy64 for their help and patience. + + Demonstrates: + + * Using overlays to store different data and loading them in memory as needed. + + Controls: + Select - Load alternative overlay +*/ + +#include +#include +#include +#include +#include + +// If USECD is defined, files will be loaded from the CD. Use this method for testing in an emulator. +// Additionaly, generate the bin/cue with mkpsxiso. + +//~ #define USECD + +#ifdef USECD + + #include + +#endif + +// Sample vector models + +#include "tritex.h" + +#include "cubetex.h" + +#define VMODE 0 + +#define SCREENXRES 320 + +#define SCREENYRES 240 + +#define CENTERX SCREENXRES/2 + +#define CENTERY SCREENYRES/2 + +#define OTLEN 2048 // Maximum number of OT entries + +#define PRIMBUFFLEN 32768 // Maximum number of POLY_GT3 primitives + +// Display and draw environments, double buffered + +DISPENV disp[2]; + +DRAWENV draw[2]; + +u_long ot[2][OTLEN]; // Ordering table (contains addresses to primitives) + +char primbuff[2][PRIMBUFFLEN] = {0}; // Primitive list // That's our prim buffer + +//~ int primcnt=0; // Primitive counter + +char * nextpri = primbuff[0]; // Primitive counter + +short db = 0; // Current buffer counter + +// Texture image + +extern unsigned long _binary_TIM_cubetex_tim_start[]; + +extern unsigned long _binary_TIM_cubetex_tim_end[]; + +extern unsigned long _binary_TIM_cubetex_tim_length; + +TIM_IMAGE tim_cube; + +// OVERLAYS CONFIG + +// These symbols name are defined in 'overlay.ld', l.8, l.24 and l.41 +// Use &load_all_overlays_here to get the memory adress where the overlay files are loaded. +// Those adresses you can check in the generated .map file at compile time. + +extern u_long load_all_overlays_here; + +extern u_long __lvl0_end; // Use &__lvl0_end to get end address of corresponding overlay. + +extern u_long __lvl1_end; + +//~ u_long overlaySize = 0; + +static char* overlayFile; // Will hold the name of the file to load. + +u_char overlayFileID, loadFileIDwas, loadFileID = 0; // Will hold an ID that's unique for each file. + +// Timer for the pad + +u_short timer = 0; + +// Prototypes + +void init(void); + +void display(void); + +void LoadTexture(u_long * tim, TIM_IMAGE * tparam); + +void init(){ + + // Reset the GPU before doing anything and the controller + PadInit(0); + ResetGraph(0); + + // Initialize and setup the GTE + InitGeom(); + SetGeomOffset(CENTERX, CENTERY); // x, y offset + SetGeomScreen(CENTERX); // Distance between eye and screen + + // Set the display and draw environments + SetDefDispEnv(&disp[0], 0, 0 , SCREENXRES, SCREENYRES); + SetDefDispEnv(&disp[1], 0, SCREENYRES, SCREENXRES, SCREENYRES); + + SetDefDrawEnv(&draw[0], 0, SCREENYRES, SCREENXRES, SCREENYRES); + SetDefDrawEnv(&draw[1], 0, 0, SCREENXRES, SCREENYRES); + + if (VMODE) + { + SetVideoMode(MODE_PAL); + disp[0].screen.y += 8; + disp[1].screen.y += 8; + } + + setRGB0(&draw[0], 0, 0, 255); + setRGB0(&draw[1], 0, 0, 255); + + draw[0].isbg = 1; + draw[1].isbg = 1; + + PutDispEnv(&disp[db]); + PutDrawEnv(&draw[db]); + + // Init font system + FntLoad(960, 0); + FntOpen(16, 16, 196, 64, 0, 256); + + } + +void display(void){ + + DrawSync(0); + VSync(0); + + PutDispEnv(&disp[db]); + PutDrawEnv(&draw[db]); + + SetDispMask(1); + + DrawOTag(ot[db] + OTLEN - 1); + + db = !db; + + nextpri = primbuff[db]; + + + } + +void LoadTexture(u_long * tim, TIM_IMAGE * tparam){ // This part is from Lameguy64's tutorial series : lameguy64.net/svn/pstutorials/chapter1/3-textures.html login/pw: annoyingmous + OpenTIM(tim); // Open the tim binary data, feed it the address of the data in memory + ReadTIM(tparam); // This read the header of the TIM data and sets the corresponding members of the TIM_IMAGE structure + + LoadImage(tparam->prect, tparam->paddr); // Transfer the data from memory to VRAM at position prect.x, prect.y + DrawSync(0); // Wait for the drawing to end + + if (tparam->mode & 0x8){ // check 4th bit // If 4th bit == 1, TIM has a CLUT + LoadImage(tparam->crect, tparam->caddr); // Load it to VRAM at position crect.x, crect.y + DrawSync(0); // Wait for drawing to end + } + +} + +int main() { + + // Update this value to avoid trigger at launch + + loadFileIDwas = overlayFileID = loadFileID; + + if ( loadFileID == 0 ){ + + overlayFile = "\\cube.bin;1"; + + //~ loadFile = &level0; + + } else if ( loadFileID == 1) { + + overlayFile = "\\tri.bin;1"; + + //~ loadFile = &level1; + } + + // Load overlay from CD if definde + + #ifdef USECD + + CdInit(); + + int cdread = 0, cdsync = 1; + + cdread = CdReadFile( (char *)(overlayFile), &load_all_overlays_here, 0); + + cdsync = CdReadSync(0, 0); + + #endif + + int i; + + int PadStatus; + + int TPressed=0; + + int AutoRotate=1; + + long t, p, OTz, Flag; // t == vertex count, p == depth cueing interpolation value, OTz == value to create Z-ordered OT, Flag == see LibOver47.pdf, p.143 + + MESH * model = &Tri; + + POLY_GT3 *poly = {0}; // pointer to a POLY_GT3 + + SVECTOR Rotate={ 0 }; // Rotation coordinates + VECTOR Trans={ 0, 0, CENTERX, 0 }; // Translation coordinates + // Scaling coordinates + VECTOR Scale={ ONE, ONE, ONE, 0 }; // ONE == 4096 + MATRIX Matrix={0}; // Matrix data for the GTE + + // Texture window + + DR_MODE * dr_mode; // Pointer to dr_mode prim + + RECT tws = {0, 0, 32, 32}; // Texture window coordinates : x, y, w, h + + init(); + + LoadTexture(_binary_TIM_cubetex_tim_start, &tim_cube); + + // Main loop + while (1) { + + // Overlay switch + + if ( loadFileID != loadFileIDwas ){ + + // Update previous file value + + loadFileIDwas = loadFileID; + + // Change file to load + + switch ( loadFileID ){ + + case 0: + + overlayFile = "\\cube.bin;1"; + + overlayFileID = 0; + + break; + + case 1: + + overlayFile = "\\tri.bin;1"; + + overlayFileID = 1; + + break; + + default: + + overlayFile = "\\cube.bin;1"; + + overlayFileID = 0; + + break; + + } + + #ifdef USECD + + cdread = CdReadFile( (char *)(overlayFile), &load_all_overlays_here, 0); + + CdReadSync(0, 0); + + #endif + + } + + // Pad button timer + + while ( timer > 0 ) { + + timer --; + + } + + // Read pad status + + PadStatus = PadRead(0); + + // If select is pressed, change overlay + + if (PadStatus & PADselect && !timer) { + + // We send the memory address where the file should be loaded, the memory address of the loadFileID, so that the screen is updated when it changes, and the file id. + + printf("load:%p:%08x:%d", &load_all_overlays_here, &loadFileID, overlayFileID); + + #ifdef USECD + + // We can do that because we only have two files + + loadFileID = !loadFileID; + + #endif + + timer = 30; + + } + + if (AutoRotate) { + Rotate.vy += 8; // Pan + Rotate.vx += 8; // Tilt + //~ Rotate.vz += 8; // Roll + } + + + // Clear the current OT + + ClearOTagR(ot[db], OTLEN); + + // Convert and set the matrixes + + RotMatrix(&Rotate, &Matrix); + + TransMatrix(&Matrix, &Trans); + + ScaleMatrix(&Matrix, &Scale); + + SetRotMatrix(&Matrix); + + SetTransMatrix(&Matrix); + + + // Render the sample vector model + t=0; + + // modelCube is a TMESH, len member == # vertices, but here it's # of triangle... So, for each tri * 3 vertices ... + + for (i = 0; i < (model->tmesh->len*3); i += 3) { + + poly = (POLY_GT3 *)nextpri; + + // Initialize the primitive and set its color values + + SetPolyGT3(poly); + + ((POLY_GT3 *)poly)->tpage = getTPage(tim_cube.mode&0x3, 0, + tim_cube.prect->x, + tim_cube.prect->y + ); + + setRGB0(poly, model->tmesh->c[i].r , model->tmesh->c[i].g , model->tmesh->c[i].b); + setRGB1(poly, model->tmesh->c[i+1].r, model->tmesh->c[i+1].g, model->tmesh->c[i+1].b); + setRGB2(poly, model->tmesh->c[i+2].r, model->tmesh->c[i+2].g, model->tmesh->c[i+2].b); + + setUV3(poly, model->tmesh->u[i].vx , model->tmesh->u[i].vy, + model->tmesh->u[i+1].vx, model->tmesh->u[i+1].vy, + model->tmesh->u[i+2].vx, model->tmesh->u[i+2].vy); + + // Rotate, translate, and project the vectors and output the results into a primitive + + OTz = RotTransPers(&model->tmesh->v[model->index[t]] , (long*)&poly->x0, &p, &Flag); + OTz += RotTransPers(&model->tmesh->v[model->index[t+1]], (long*)&poly->x1, &p, &Flag); + OTz += RotTransPers(&model->tmesh->v[model->index[t+2]], (long*)&poly->x2, &p, &Flag); + + // Sort the primitive into the OT + OTz /= 3; + if ((OTz > 0) && (OTz < OTLEN)) + AddPrim(&ot[db][OTz-2], poly); + + nextpri += sizeof(POLY_GT3); + + t+=3; + + } + + dr_mode = (DR_MODE *)nextpri; + + setDrawMode(dr_mode,1,0, getTPage(tim_cube.mode&0x3, 0, + tim_cube.prect->x, + tim_cube.prect->y), &tws); //set texture window + + AddPrim(&ot[db], dr_mode); + + nextpri += sizeof(DR_MODE); + + + FntPrint("Hello overlay!\n"); + + #ifndef USECD + + FntPrint("Overlay with id %d loaded at 0x%08x", overlayFileID, &load_all_overlays_here); + + #endif + + #ifdef USECD + + FntPrint("File: %s\n", overlayFile); + + FntPrint("Bytes read: %d", cdread); + + #endif + + FntFlush(-1); + + display(); + + } + return 0; +} diff --git a/ovl-upload.ps-exe b/ovl-upload.ps-exe new file mode 100755 index 0000000000000000000000000000000000000000..6acb1681d95af5e9abd4da1d40a988e87b483534 GIT binary patch literal 86016 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 Q1pfB~{`Um_e|ZA`4*+}s`Tzg` literal 0 HcmV?d00001 diff --git a/ovl-upload.py b/ovl-upload.py new file mode 100755 index 0000000..d28f464 --- /dev/null +++ b/ovl-upload.py @@ -0,0 +1,633 @@ +#!/usr/bin/env python + +# ovl-upload.c, by ABelliqueux, 04-2021 license GNU General Public License v3.0 + +# This working version corrected with the help of sickle : +# https://discord.com/channels/642647820683444236/663664210525290507/836029253593858060 +# Corrected script by Sickle : http://psx.arthus.net/code/rawdog.py + +# Sickle - 26/04/2021 : +# " Ooh, you were like frustratingly close dude! Few tiny issues: +# - first of your 3 rolling buffers was bugged (other 2 were spot on) +# - waiting too long between commands at points, unirom timed out +# - var i was missing the i += chunkSize so we were stuck in a loop there (e.g. tried to send a second chonk) +# - exit was gummed up with the main logic being in a while True: " + +# As suggested: +# - Removed while True: loop +# - moved rolling buffer loops to WaitForResponse() +# - reduced sleeps +# - inc var i with chunkSize + +import sys +import os +import serial +import time +import calendar +import math +import signal + +DEBUG = 0 + +SERIAL_DEVICE = '/dev/ttyUSB0' + +SERIAL_SPEED = 115200 + +# Names of the overlay files to load. +# See l.550 + +overlayFile0 = "Overlay.ovl0" + +overlayFile1 = "Overlay.ovl1" + +# Serial connection setup + +ser = serial.Serial(SERIAL_DEVICE) + +# Unirom can do 115200 and 510000 ( https://github.com/JonathanDotCel/NOTPSXSerial/blob/bce29e87cb858769fe60eb34d8eb123f9f36c8db/NOTPSXSERIAL.CS#L842 ) + +ser.baudrate = SERIAL_SPEED + +# Working directory + +cwd = os.getcwd() + +dataFolder = cwd + os.sep + +# Should we listen for commands on serial ? + +Listen = 1 + +# Will be set once unirom is in debug mode + +uniDebugMode = 0 + +# Will hold the commands received from the psx + +Command = "" + +memAddr = "" + +flagAddr = "" + +loadFile = "" + +levelId = "" + +# One byte + +#uno = int(1).to_bytes(1, byteorder='little', signed=False) + +data = 0 + +# checkSum is the checkSum for the full data + +checkSum = 0 + +# If set, it means the data transfer has been initiated + +Transfer = 0 + +# Delay between write operations. These seem to be needed for the connection not to hang. + +sleepTime = 0.08 # Seems like safe minimum + +def sig_interrupt_handler(signal, frame): + + global Run + + Run = False + +def setDEBG(): + + global sleepTime, ser, uniDebugMode + + if DEBUG: + + print("Sending DEBG command...") + + ser.write( bytes( 'DEBG' , 'ascii' ) ) + + time.sleep(sleepTime) + + # Empty in waiting buffer + + ser.reset_input_buffer() + + time.sleep(sleepTime) + + uniDebugMode = 1 + +def WaitForResponse( expectedAnswer ): + + # Get incoming data from the serial port in a rolling buffer + # when the content of the buffer corresponds to 'expectedAnswer', returns True + + global DEBUG + + responseBuffer = "" + + success = False + + while True: + + if DEBUG > 1: + + print("Waiting for data in serial input buffer.") + + # If data in serial's incoming buffer + + if ser.in_waiting: + + if DEBUG > 1: + + print("Brace yourself, data is coming...") + + # Read 1 byte + + byteValue = ser.read(1) + + # Make sure byte value is < 128 so that it can be decoded to ascii + + if byteValue[0] < 128: + + responseBuffer += byteValue.decode('ascii') + + else: + + responseBuffer += '.' + + # Always keep response buffer 4 chars long + + if len( responseBuffer ) > 4: + + # Remove first char in buffer + + responseBuffer = responseBuffer[1:] + + + # If response is ERR!, checksum check does not check, so check it again + + if responseBuffer == "ERR!": + + if DEBUG > 1: + + print("Checksum error !") + + success = False + + break + + # When expected response shows up, break from the while loop + + if responseBuffer == expectedAnswer: + + success = True + + break + if DEBUG > 1: + + print( "Got : " + responseBuffer ) + + responseBuffer = "" + + return success + +def CalculateChecksum( inBytes, skipFirstSector = False): + + returnVal = 0; + + i = 0 + + if skipFirstSector: + + i = 2048 + + while i < len( inBytes ): + + returnVal += inBytes[i]; + + i += 1 + + return returnVal; + +def WriteBytes( inData ): + + if DEBUG: + + print("Preparing to write bytes...") + + # The data needs to be split in 2K chunks + + chunkSize = 2048 + + # BEGIN WHILE DATA + + i = 0 + + while i < len( inData ): + + # BEGIN WHILE TRUE + + while True: + + # BEGIN TRY/EXCEPT + + try: + + # Calculate number of 2K chunks we're about to send + + numChunk = math.ceil( len( inData ) / chunkSize ) + + # Calculate current chunk + + currentChunk = math.ceil( (i + 1) / chunkSize) + + if DEBUG: + + print( str ( numChunk + 1 - currentChunk ) + " chunks of " + str ( chunkSize) + " bytes to send " ) + + # Avoid going out of range + + if ( i + chunkSize ) > len( inData ): + + chunkSize = len( inData ) - i + + print("Writing chunk " + str( currentChunk ) + " of " + str( numChunk ) ) + + # ~ ser.write(inData) + + chunkChecksum = 0 + + # Send inData in 2048B chunks + + for byte in range( chunkSize ): + + # Send byte + + if DEBUG > 1: + + print("Writing " + str( inData[ i + byte ].to_bytes(1, byteorder='little', signed=False) ) + " to serial..." ) + + ser.write( inData[ i + byte ].to_bytes(1, byteorder='little', signed=False) ) + + # Calculate chunk checksum + + chunkChecksum += inData[ i + byte ] + + time.sleep(sleepTime) + + if DEBUG: + + print( "Chunk cheksum : " + str( chunkChecksum ) ) + + # Wait for output buffer to be empty + # REMOVE ? Is this needed ? + + while ser.out_waiting: + + print("*") + + wait += 1 + + time.sleep(sleepTime) + + # Wait for unirom to request the checksum + + if DEBUG > 1: + + print( "Chunk " + str( currentChunk ) + " waiting for unirom to request checksum (CHEK)..." ) + + WaitForResponse( "CHEK" ) + + # Send checksum + + if DEBUG: + + print( "Sending checksum to unirom..." ); + + # ~ chunkChecksum = 170 + + bytesChunkChecksum = chunkChecksum.to_bytes( 4, byteorder='little', signed = False ) + + ser.write( bytesChunkChecksum ) + + # ~ time.sleep( sleepTime ) + + if DEBUG > 1: + + print( "Waiting for unirom to request more data (MORE)..." ) + + # Wait for unirom to request MORE inData ( next chunk ) + + if not WaitForResponse("MORE"): + + if DEBUG: + + print("ERROR ! Retrying...") + + raise Exception() + + if DEBUG: + + print( str( currentChunk ) + " chunk sent with correct checksum.") + + # Increment i from chunkSize + + i += chunkSize + + except Exception: + + continue + + # END TRY/EXCEPT + + break + + # END WHILE TRUE + + numChunk = 0 + + # END WHILE DATA + +def SendBin( inData, memAddr ): + + global sleepTime + + dataSize = len( inData ) + + if DEBUG: + + print("Data size : " + str( dataSize ) ) + + # Prepare unirom for data reception - sent "SBIN" - received : "OKV2" + + if DEBUG > 1: + + print("Sending SBIN command...") + + ser.write( bytes( 'SBIN' , 'ascii' ) ) + + time.sleep(sleepTime) + + # We're using unirom in debug mode, which means protocol version 2 is available + # Upgrade protocol - sent "UPV2" - received : "OKAY" + + ser.write( bytes( 'UPV2' , 'ascii' ) ) + + time.sleep(sleepTime) + + # Initialisation done, set flag + + # ~ Init = 1 + + # From now on, we're using the rolling buffer + if DEBUG > 1: + + print("Waiting for OKAY...") + + WaitForResponse("OKAY") + + # Calculate data checkSum + + checkSum = CalculateChecksum( inData ) + + if DEBUG : + + print("Data checkSum : " + str(checkSum) ) + + # Send memory address to load data to, size of data and checkSum + # Unirom expects unsigned longs ( 32bits ), byte endianness little + + # Convert address from string to integer, then to ulong 32b + + bytesAddr = int( memAddr, 16 ).to_bytes( 4, byteorder='little', signed=False ) + + # Write address to serial + + ser.write( bytesAddr ) + + time.sleep(sleepTime) + + # Convert and write int size to serial + + bytesSize = dataSize.to_bytes( 4, byteorder='little', signed = False ) + + ser.write( bytesSize ) + + time.sleep(sleepTime) + + # Convert and write int chekSum to serial + + bytesChk = checkSum.to_bytes( 4, byteorder='little', signed = False ) + + ser.write( bytesChk ) + + time.sleep(sleepTime) + + # Send dat data + + WriteBytes( inData ) + +def resetListener(): + + global checkSum, data, Listen, Transfer, dataSize, memAddr, loadFile, flagAddr, levelId + + memAddr = "" + + flagAddr = "" + + loadFile = "" + + checkSum = 0 + + data = 0 + + dataSize = 0 + + Transfer = 0 + + levelId = 0 + + Listen = 1 + + ser.reset_input_buffer() + + ser.reset_output_buffer() + +def main(args): + + while True: + + global checkSum, data, Listen, Transfer, dataSize, memAddr, loadFile, flagAddr, levelId + + # Flush serial buffers to avoid residual data + + ser.reset_input_buffer() + + ser.reset_output_buffer() + + inputBuffer = "" + + # Listen to incomming connections on serial + + if Listen: + + print("Listening for incoming data...") + + if DEBUG > 1: + + print("memAddr : " + str(memAddr) + " - loadFile" + loadFile ) + + while True: + + # If data on serial, fill buffer + + while ser.in_waiting: + + inputBuffer += ser.read().decode('ascii') + + if inputBuffer: + + if DEBUG: + + print( "Incoming data : " + inputBuffer ) + + # parse command CMD:ARG1:ARG2(:ARGn) + + argList = [] + + argList = inputBuffer.split(':') + + # Send command + + if argList[0] == "load" and len(argList) == 4: + + if len(argList[1]) < 8 or len(argList[2]) < 8: + + if DEBUG: + + print("Wrong data format, aborting...") + + break + + memAddr = argList[1] + + flagAddr = argList[2] + + loadFile = argList[3] + + ser.reset_input_buffer() + + inputBuffer = "" + + if DEBUG > 1: + + print( memAddr + " - " + flagAddr + " - " + loadFile ) + + Listen = 0 + + break + + else: + + ser.reset_input_buffer() + + inputBuffer = "" + + break + + if memAddr and loadFile: + + # Remove separator and ';1' at end of the string + + # ~ fileClean = loadFile.split(';')[0][1:] + fileID = loadFile + + print("Received addresses and file ID : " + memAddr + " - " + flagAddr + " - " + fileID) + + # TODO : replace with a proper level naming scheme + # right now, we're receiving currently loaded file + # so we have to switch manually here. + + binFileName = "" + + if fileID == "0": + + binFileName = overlayFile1 + + levelId = 1 + + if fileID == "1": + + binFileName = overlayFile0 + + levelId = 0 + + if DEBUG: + + print( + + "Load Data to : " + memAddr + "\n" + + + "Reset flag at: " + flagAddr + "\n" + + + "File : " + loadFile + "\n" + + + "Bin : " + binFileName + " - ID : " + str(levelId) + + ) + + # Open file as binary if bin filename is defined + + if binFileName: + + binFile = open( dataFolder + binFileName, 'rb' ) + + data = binFile.read() + + Transfer = 1 + + else: + + print(" No filename provided, doing nothing ") + + resetListener() + + # If Init was set, initialize transfer and send data + + if Transfer: + + print("Initializing data transfer...") + + if not uniDebugMode: + + # Set unirom to debugmode - sent : "DEBG" - received : "DEBGOKAY" + + setDEBG() + + # Send level data + + SendBin( data, memAddr ) + + # Set level changed flag + + if DEBUG: + + print("Sending value " + str( levelId.to_bytes(1, byteorder='little', signed=False) ) + " to " + flagAddr ) + + time.sleep( sleepTime ) + + SendBin( levelId.to_bytes(1, byteorder='little', signed=False) , flagAddr) + + # Reset everything + + resetListener() + + print("DONE!") + + return 0 + +if __name__ == '__main__': + import sys + sys.exit(main(sys.argv)) diff --git a/ovl.gif b/ovl.gif new file mode 100644 index 0000000000000000000000000000000000000000..b91f414d577b240d9bf23511bf7f3a624bb8262e GIT binary patch literal 66199 zcmb??XH*l7+U*bmBoHw4A|Q~^1O%ivNvNTyp+rFeX;OpI1O!w%p$F**N-qJG66r{9 z(gLCc1VM^m1qB5)n#=p1bH4MHyY8R+t^CQ#N@iwd&EC&`_TFP^W}>O(f@IhQ4o)Zo z0DuGl3;^H(fCvC&0H6W@?e9;KNC1Nb@JN7&1jtB$iUeqXe-()VFc<)j0f-oYi~*<^ zfcE$Ak$3=u2k>}+hzH1cfQkobe;*V{1TaJZPXvfWfJ_9aM1c19nUG`vLk93k+f z1WUPhsVfM+9 zdu{`vbmPvKZg#tV*`P}8#W zOEFOGYUfzknS5anmPO;$cmWTY!VnhiZI`$c1~O%F;&&kuN;5b}RDyiV_L`&c&x>|k z--S2MJAYpa%Fz2RX1i{nYEE9yI3Y5)jz;Z6Ebl^oyJcjt%!F;+HP_DG(2p|u;g-fC zj^0Q@@QV54a3ZW7+0eh;o*u-maBc&&Z)J@3zRQfY*Z1!8efM*%!H^5;#P zl8~R?=OtpFZr6A!Uz-;RcY20Hq_qUxSU+nP$cs$Aa%!V8EhyxA_<$-nYWUlmp5+nEmW-~qbj{K^i#AyAj^9vp!bW@ zB-~_hQLa@UN;jWreJVK*nyoGz6@HIwd10M`MSeVU^08Btp(0+0h>Pk2l6R9YQG+-q~Dq7GuZmaq4KUC^CW_7^0|ws zZ@ZlQAc@Z=_1jB`Y@I~m+?pV!HbySw-OX^B4_*f@UT%dDB6D+`2l6DBa`zwqGMjYrZ8h>-L47Z)HH zM2N!sOQUQ>U;Skd{4UCs=1g}q(3@YiVe=@bYOc45}Y9#LCXGy>82rTo$ zTI>}C!wilu^fRkGP@TmqsLnG#&n2D-u)ZAGd2dOn9NrcG>DFrW^F>jCVZJmgm4siM zhxy+t&f0UNv1As#JvB0XCr8c`Wiu{Vw^pBsPRTfPx?J2U6f;+Q%B`Mpx!r(STl*6< zwC(xx&rNfk)|}U`-dfAT3WYqvpKH9HgWsHR(h_iN+>AtDcF-01+OV55D@r`Lx zdgWJ67!*S+tK#{}79E}_7i5$_9asTZ%nZEKS$1M--&FLEF;7`P`2k%?O7>-r9G;QU zWW2upk-#NvIrqo69b~V*bk1Yq5ZG#(`*$?vnWU9ucZK%6nWo^AOB8CXvKIMhgCfhM3z<)Is>cKIZjTo&7wC&2 zzV-YHf!mn3V)YhlK znVmaK4h8#b9zBrn*X|Vb>waI_>A<_(55D)RXX_Em#lw_Gw@Es0`Zf8>za5{xt68`L zzIXVL?a^4&JBwAm=EET?iN^5rmg^U)G&SU=0-{{H)}Ox#9aiILf~?31i*!;)blMX*es4(^s2&*8InsIe~&0q`pOKa*@!r8)mMOy~kUejQP{RdlJ+o+4fQ^~62ipE$k zHnW93hpDeQ-9_Hepv7l`Qq4{S4x6cW!^b^d*5tU?zcuUZ(9ThZl=GhbVE^ipBr*MC zUFhUJJC(YZ=^P>DiIeV=yFaO&U(^~ByFYrIC%lL=X(8*Ze_(by>??kGI@jXUyVJhf zbJe0jZTf!iSIatBpjPDEpPsMyi#@vk>B zbpB_Z+*3QbCxo@yUtfFXIh94|EZS7;`QbgM;9vM_shfGEox=MlXi-VHP5-=h*uIEg z>h_U1s&qx~Fiy)Ca39XK~9*QQ@fZ@u+9 z7uP?#WgRSiy6&kh|8DAF?~LQ;eZ3Cv-TR>t7PQ5M&xb4MYo9HyBjJ4laZ1SZKgQS$ z;khGS8)^@JjECOd>!P7Pe|lm(cN-Z4GA=Il|K9Bx(h{8^mK&4;>heQ^`+w!5@pq z+)@j>O;3n@9)S0W>@zI4v;$LG!;Y

92w5Ae6QO}7%4o9d)N20 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 fjc;(U02tD)K$J_Y&k(!Zg} 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 +#include +#include + +#ifndef custom_types + +typedef struct MESH { + + TMESH * tmesh; + + int * index; + + } MESH; + +#define custom_types + +#endif + +extern SVECTOR modelTri_mesh[8]; + +extern SVECTOR modelTri_normal[36]; + +extern SVECTOR modelTri_uv[144]; + +extern CVECTOR modelTri_color[144]; + +extern int modelTri_index[]; + +extern TMESH modelTri; + +extern MESH Tri;