ReC98/Tupfile

173 lines
6.8 KiB
Plaintext

# 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