# Tupfile for the 32-part of the build process # -------------------------------------------- # ⚠️ CAUTION! ⚠️ # You are on the `master` branch, which builds PC-98 DOS binaries that are # identical to ZUN's originally released binaries. If you want to port the game # to other architectures or develop a mod that doesn't need to be byte-for-byte # comparable to the original binary, start from the cleaned-up `debloated` # branch instead. That branch is easier to read and modify, and builds smaller # and slightly faster PC-98 binaries while leaving all bugs and quirks from # ZUN's original code in place. # Seriously, you'd just be torturing yourself if you do anything nontrivial # based on this branch. # ⚠️ CAUTION! ⚠️ AS = tasm32 /m /mx /kh32768 /t CXX32 = bcc32 # Silence incorrect warnings for Borland C++ 5.5 # ---------------------------------------------- # 'identifier' is assigned a value that is never used CXX32FLAGS += -w-8004 # Comparing signed and unsigned values CXX32FLAGS += -w-8012 # ---------------------------------------------- CXX32FLAGS += -O2 -v- -x- # Backslashes necessary for the .bat file generated by `tup generate`! BMP2ARR = bin\\Pipeline\\bmp2arr.exe : Pipeline\\bmp2arr.c Pipeline\\bmp2arrl.c \ |> $(CXX32) $(CXX32FLAGS) -nbin/Pipeline/ %f \ |> bin/Pipeline/bmp2arrl.obj \ bin/Pipeline/bmp2arr.obj \ bin/Pipeline/bmp2arr.tds \ $(BMP2ARR) !bmp2arr = | $(BMP2ARR) |> $(BMP2ARR) -q -i %f -o %o |> %o : th01/sprites/leaf_s.bmp |> !bmp2arr -sym sSPARK -of cpp -sw 8 -sh 8 |> th01/sprites/leaf_s.csp : th01/sprites/leaf_l.bmp |> !bmp2arr -sym sLEAF_LEFT -of cpp -sw 8 -sh 8 |> th01/sprites/leaf_l.csp : th01/sprites/leaf_r.bmp |> !bmp2arr -sym sLEAF_RIGHT -of cpp -sw 8 -sh 8 |> th01/sprites/leaf_r.csp : th01/sprites/ileave_m.bmp |> !bmp2arr -sym sINTERLEAVE_MASKS -of cpp -sw 8 -sh 8 |> th01/sprites/ileave_m.csp # ZUN bug: Supposed to be 8 preshifted sprites, with a height of 1 and a width # of SHOOTOUT_LASER_MAX_W pixels each, but ZUN messed up a single pixel in the # first pre-shifted sprite. So, we're forced to manually unroll them… : th01/sprites/laser_s.bmp |> !bmp2arr -sym sSHOOTOUT_LASER -of cpp -sw 16 -sh 8 |> th01/sprites/laser_s.csp : th01/sprites/mousecur.bmp |> !bmp2arr -sym sMOUSE_CURSOR -of cpp -sw 16 -sh 16 |> th01/sprites/mousecur.csp : th01/sprites/pellet.bmp |> !bmp2arr -sym sPELLET -of cpp -sw 8 -sh 8 -pshf inner |> th01/sprites/pellet.csp : th01/sprites/pellet_c.bmp |> !bmp2arr -sym sPELLET_CLOUD -of cpp -sw 16 -sh 16 |> th01/sprites/pellet_c.csp : th01/sprites/pillar.bmp |> !bmp2arr -sym sPILLAR -of cpp -sw 32 -sh 8 |> th01/sprites/pillar.csp : th01/sprites/shape8x8.bmp |> !bmp2arr -sym sSHAPE8X8 -of cpp -sw 8 -sh 8 |> th01/sprites/shape8x8.csp : th01/sprites/bonusbox.bmp |> !bmp2arr -sym sSTAGEBONUS_BOX -of cpp -sw 8 -sh 4 |> th01/sprites/bonusbox.csp : th02/sprites/bombpart.bmp |> !bmp2arr -sym _sBOMB_PARTICLES -of asm -sw 8 -sh 8 |> th02/sprites/bombpart.asp : th02/sprites/pellet.bmp |> !bmp2arr -sym _sPELLET -of asm -sw 8 -sh 8 -pshf outer |> th02/sprites/pellet.asp : th02/sprites/sparks.bmp |> !bmp2arr -sym _sSPARKS -of asm -sw 8 -sh 8 -pshf outer |> th02/sprites/sparks.asp : th02/sprites/pointnum.bmp |> !bmp2arr -sym _sPOINTNUMS -of asm -sw 8 -sh 8 |> th02/sprites/pointnum.asp : th03/sprites/score.bmp |> !bmp2arr -sym _sSCORE_FONT -of asm -sw 8 -sh 8 -u |> th03/sprites/score.asp : th04/sprites/pelletbt.bmp |> !bmp2arr -sym _sPELLET_BOTTOM -of asm -sw 8 -sh 4 -pshf outer |> th04/sprites/pelletbt.asp : th04/sprites/pointnum.bmp |> !bmp2arr -sym _sPOINTNUMS -of asm -sw 8 -sh 8 -pshf inner |> th04/sprites/pointnum.asp : th05/sprites/gaiji.bmp |> !bmp2arr -sym _sGAIJI -of asm -sw 16 -sh 16 |> th05/sprites/gaiji.asp : th05/sprites/piano_l.bmp |> !bmp2arr -sym _sPIANO_LABEL_FONT -of asm -sw 8 -sh 8 |> th05/sprites/piano_l.asp : Research/blitperf.bmp |> !bmp2arr -sym sBLITPERF -of cpp -sw 16 -sh 16 |> Research/blitperf.csp !as = |> $(AS) %f %o |> bin\\%B.obj !as2 = |> $(AS) /dGAME=2 th02\%b %o |> bin\\th02\\%B.obj !as3 = |> $(AS) /dGAME=3 th03\%b %o |> bin\\th03\\%B.obj !as4 = |> $(AS) /dGAME=4 th04\%b %o |> bin\\th04\\%B.obj !as5 = |> $(AS) /dGAME=5 th05\%b %o |> bin\\th05\\%B.obj # Third-party libraries : libs\\piloadc\\piloadc.asm |> $(AS) /ml libs\piloadc\%b %o |> bin\\%B.obj # ZUN.COM : zuncom\\zun_stub.asm |> $(AS) zuncom\%b %o |> bin\\zuncom\\%B.obj : zuncom\\cstmstub.asm |> $(AS) zuncom\%b %o |> bin\\zuncom\\%B.obj : th01_op.asm |> !as |> bin\\th01\\op.obj : th01_reiiden.asm |> !as |> bin\\th01\\reiiden.obj : th01_fuuin.asm |> !as |> bin\\th01\\fuuin.obj : th02_zuninit.asm |> !as |> bin\\th02\\zuninit.obj : th02_op.asm |> !as |> bin\\th02\\op.obj : th02_main.asm | \ th02/sprites/bombpart.asp \ th02/sprites/pellet.asp \ th02/sprites/sparks.asp \ th02/sprites/pointnum.asp \ |> !as |> bin\\th02\\main.obj : th02_maine.asm |> !as |> bin\\th02\\maine.obj : libs/sprite16/sprite16.asm |> $(AS) /DTHIEF libs\sprite16\sprite16.asm %o |> bin\\th03\\zunsp.obj : th03\\cdg_put.asm |> !as3 |> : th03\\cdg_p_na.asm |> !as3 |> : th03\\hfliplut.asm |> !as3 |> : th03\\collmap.asm |> !as3 |> : th03_op.asm |> !as |> bin\\th03\\op.obj : th03_main.asm | \ th03/sprites/score.asp \ |> !as |> bin\\th03\\main.obj : th03_mainl.asm |> !as |> bin\\th03\\mainl.obj : th04_zuninit.asm |> !as |> bin\\th04\\zuninit.obj : th04_memchk.asm |> !as |> bin\\th04\\memchk.obj : th04\\scoreupd.asm |> !as4 |> : th04\\cdg_put.asm |> !as4 |> : th04\\cdg_p_nc.asm |> !as4 |> : th04\\cdg_p_pl.asm |> !as4 |> : th04\\cdg_p_pr.asm |> !as4 |> : th04\\input_s.asm |> !as4 |> : th04\\cdg_load.asm |> !as4 |> : th04\\bgimager.asm |> !as4 |> : th04\\motion_3.asm |> !as4 |> : th04\\spark_a.asm |> !as4 |> : th04\\vector2n.asm |> !as4 |> : th04_op.asm |> !as |> bin\\th04\\op.obj : th04_main.asm | \ th02/sprites/pellet.asp \ th04/sprites/pelletbt.asp \ th02/sprites/sparks.asp \ th04/sprites/pointnum.asp \ |> !as |> bin\\th04\\main.obj : th04_maine.asm |> !as |> bin\\th04\\maine.obj : th05_zuninit.asm |> !as |> bin\\th05\\zuninit.obj : th05_gjinit.asm | \ th05/sprites/gaiji.asp \ |> !as |> bin\\th05\\gjinit.obj : th05_memchk.asm |> !as |> bin\\th05\\memchk.obj : th04\\scoreupd.asm |> $(AS) /dGAME=5 th04\%b, %o |> bin\\th05\\%B.obj : th05\\player.asm |> !as5 |> : th05\\hud_bar.asm |> !as5 |> : th05\\bullet_1.asm |> !as5 |> : th05\\bullet.asm |> !as5 |> : th05\\input_s.asm |> !as5 |> : th05\\cdg_put.asm |> !as5 |> : th05\\musicp_a.asm |> !as5 |> : th05\\bgimager.asm |> !as5 |> : th05\\pi_asm_1.asm |> !as5 |> : th05\\pi_asm_2.asm |> !as5 |> : th05\\spark_a.asm |> !as5 |> : th05_op.asm | \ th05/sprites/piano_l.asp \ |> !as |> bin\\th05\\op.obj : th05_main.asm | \ th02/sprites/pellet.asp \ th04/sprites/pelletbt.asp \ th02/sprites/sparks.asp \ th04/sprites/pointnum.asp \ |> !as |> bin\\th05\\main.obj : th05_maine.asm |> !as |> bin\\th05\\maine.obj