diff --git a/Makefile b/Makefile index 4ec895d91..c4f63b885 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,6 @@ endif ifeq ($(ROMID),pal-beta) PAL=1 VERSION=3 - PIRACYCHECKS=0 ZIPMAGIC=0x0c00 endif ifeq ($(ROMID),pal-final) diff --git a/ld/gamefiles.pal-beta.inc b/ld/gamefiles.pal-beta.inc new file mode 100644 index 000000000..5436bc063 --- /dev/null +++ b/ld/gamefiles.pal-beta.inc @@ -0,0 +1,217 @@ +#define GAMEFILES(section) \ + build/ROMID/game/game_000000.o (section); \ + build/ROMID/game/game_000090.o (section); \ + build/ROMID/game/game_000130.o (section); \ + build/ROMID/game/stubs/game_000840.o (section); \ + build/ROMID/game/stubs/game_000850.o (section); \ + build/ROMID/game/stubs/game_000860.o (section); \ + build/ROMID/game/stubs/game_000870.o (section); \ + build/ROMID/game/game_000880.o (section); \ + build/ROMID/game/stubs/game_0008e0.o (section); \ + build/ROMID/game/stubs/game_0008f0.o (section); \ + build/ROMID/game/stubs/game_000900.o (section); \ + build/ROMID/game/stubs/game_000910.o (section); \ + build/ROMID/game/dlights.o (section); \ + build/ROMID/game/game_005fd0.o (section); \ + build/ROMID/game/game_006900.o (section); \ + build/ROMID/game/game_006bd0.o (section); \ + build/ROMID/game/nbomb.o (section); \ + build/ROMID/game/stubs/game_00b180.o (section); \ + build/ROMID/game/game_00b190.o (section); \ + build/ROMID/game/stubs/game_00b200.o (section); \ + build/ROMID/game/game_00b210.o (section); \ + build/ROMID/game/game_00b320.o (section); \ + build/ROMID/game/game_00b420.o (section); \ + build/ROMID/game/game_00b480.o (section); \ + build/ROMID/game/game_00b820.o (section); \ + build/ROMID/game/game_00c240.o (section); \ + build/ROMID/game/game_00c490.o (section); \ + build/ROMID/game/game_0108d0.o (section); \ + build/ROMID/game/objectives/setup.o (section); \ + build/ROMID/game/casing/reset.o (section); \ + build/ROMID/game/bondguninit.o (section); \ + build/ROMID/game/playerinit.o (section); \ + build/ROMID/game/inventory/init.o (section); \ + build/ROMID/game/game_0125a0.o (section); \ + build/ROMID/game/game_012aa0.o (section); \ + build/ROMID/game/game_012d50.o (section); \ + build/ROMID/game/explosions/init.o (section); \ + build/ROMID/game/smoke/init.o (section); \ + build/ROMID/game/sparks/init.o (section); \ + build/ROMID/game/weather/init.o (section); \ + build/ROMID/game/stubs/game_013540.o (section); \ + build/ROMID/game/game_013550.o (section); \ + build/ROMID/game/shards/init.o (section); \ + build/ROMID/game/game_013b80.o (section); \ + build/ROMID/game/game_013cf0.o (section); \ + build/ROMID/game/game_013ee0.o (section); \ + build/ROMID/game/game_0147a0.o (section); \ + build/ROMID/game/game_0147d0.o (section); \ + build/ROMID/game/botmgr.o (section); \ + build/ROMID/game/botinvinit.o (section); \ + build/ROMID/game/game_014f10.o (section); \ + build/ROMID/game/game_015010.o (section); \ + build/ROMID/game/game_0150a0.o (section); \ + build/ROMID/game/objectives/autocomplete.o (section); \ + build/ROMID/game/stubs/game_015260.o (section); \ + build/ROMID/game/stubs/game_015270.o (section); \ + build/ROMID/game/explosions/reset.o (section); \ + build/ROMID/game/smoke/reset.o (section); \ + build/ROMID/game/stubs/game_0153f0.o (section); \ + build/ROMID/game/stubs/game_015400.o (section); \ + build/ROMID/game/stubs/game_015410.o (section); \ + build/ROMID/game/shards/reset.o (section); \ + build/ROMID/game/game_015470.o (section); \ + build/ROMID/game/title.o (section); \ + build/ROMID/game/game_01afc0.o (section); \ + build/ROMID/game/game_01b0a0.o (section); \ + build/ROMID/game/activemenu/tick.o (section); \ + build/ROMID/game/game_01bea0.o (section); \ + build/ROMID/game/weather/tick.o (section); \ + build/ROMID/game/game_01d860.o (section); \ + build/ROMID/game/game_01d8c0.o (section); \ + build/ROMID/game/game_01d990.o (section); \ + build/ROMID/game/casing/tick.o (section); \ + build/ROMID/game/shards/tick.o (section); \ + build/ROMID/game/sparks/tick.o (section); \ + build/ROMID/game/chr/chr.o (section); \ + build/ROMID/game/game_02cde0.o (section); \ + build/ROMID/game/chr/chraction.o (section); \ + build/ROMID/game/chr/chrai.o (section); \ + build/ROMID/game/chr/chraicommands.o (section); \ + build/ROMID/game/prop.o (section); \ + build/ROMID/game/propobj.o (section); \ + build/ROMID/game/propobjbss.o (section); \ + build/ROMID/game/game_091e10.o (section); \ + build/ROMID/game/game_092610.o (section); \ + build/ROMID/game/objectives/objectives.o (section); \ + build/ROMID/game/game_096360.o (section); \ + build/ROMID/game/game_096700.o (section); \ + build/ROMID/game/atan2f.o (section); \ + build/ROMID/game/acosasin.o (section); \ + build/ROMID/game/acosfasinf.o (section); \ + build/ROMID/game/game_096b20.o (section); \ + build/ROMID/game/game_096ca0.o (section); \ + build/ROMID/game/floor.o (section); \ + build/ROMID/game/ceil.o (section); \ + build/ROMID/game/game_097a50.o (section); \ + build/ROMID/game/game_097aa0.o (section); \ + build/ROMID/game/inventory/items.o (section); \ + build/ROMID/game/bondgun.o (section); \ + build/ROMID/game/game_0abe70.o (section); \ + build/ROMID/game/mpstats.o (section); \ + build/ROMID/game/game_0b0fd0.o (section); \ + build/ROMID/game/game_0b2150.o (section); \ + build/ROMID/game/game_0b28d0.o (section); \ + build/ROMID/game/game_0b3350.o (section); \ + build/ROMID/game/game_0b4950.o (section); \ + build/ROMID/game/game_0b63b0.o (section); \ + build/ROMID/game/player.o (section); \ + build/ROMID/game/game_0c33f0.o (section); \ + build/ROMID/game/bondcutscene.o (section); \ + build/ROMID/game/bondwalk.o (section); \ + build/ROMID/game/bondmove.o (section); \ + build/ROMID/game/bondgrab.o (section); \ + build/ROMID/game/bondeyespy.o (section); \ + build/ROMID/game/bondbike.o (section); \ + build/ROMID/game/savebuffer.o (section); \ + build/ROMID/game/healthbar.o (section); \ + build/ROMID/game/sight.o (section); \ + build/ROMID/game/hudmsg.o (section); \ + build/ROMID/game/menugfx.o (section); \ + build/ROMID/game/menuitem.o (section); \ + build/ROMID/game/menu.o (section); \ + build/ROMID/game/activemenu/activemenu.o (section); \ + build/ROMID/game/stubs/game_102230.o (section); \ + build/ROMID/game/mainmenu.o (section); \ + build/ROMID/game/cheats.o (section); \ + build/ROMID/game/filemgr.o (section); \ + build/ROMID/game/game_10c9c0.o (section); \ + build/ROMID/game/endscreen.o (section); \ + build/ROMID/game/gamefile.o (section); \ + build/ROMID/game/bossfile.o (section); \ + build/ROMID/game/filelist.o (section); \ + build/ROMID/game/inventory/inventory.o (section); \ + build/ROMID/game/bondhead.o (section); \ + build/ROMID/game/padhalllv.o (section); \ + build/ROMID/game/pad.o (section); \ + build/ROMID/game/pak/pak.o (section); \ + build/ROMID/game/debug1.o (section); \ + build/ROMID/game/debug2.o (section); \ + build/ROMID/game/debug3.o (section); \ + build/ROMID/game/stubs/game_11eff0.o (section); \ + build/ROMID/game/gailists.o (section); \ + build/ROMID/game/modeldata/general.o (section); \ + build/ROMID/game/modeldata/basic.o (section); \ + build/ROMID/game/modeldata/chrgun.o (section); \ + build/ROMID/game/modeldata/skel0b.o (section); \ + build/ROMID/game/modeldata/player.o (section); \ + build/ROMID/game/modeldata/skel0a.o (section); \ + build/ROMID/game/modeldata/skel20.o (section); \ + build/ROMID/game/modeldata/classicgun.o (section); \ + build/ROMID/game/modeldata/casing.o (section); \ + build/ROMID/game/modeldata/skel06.o (section); \ + build/ROMID/game/modeldata/uzi.o (section); \ + build/ROMID/game/modeldata/weapon.o (section); \ + build/ROMID/game/modeldata/chr.o (section); \ + build/ROMID/game/modeldata/skedar.o (section); \ + build/ROMID/game/modeldata/robot.o (section); \ + build/ROMID/game/game_11f000.o (section); \ + build/ROMID/game/playermgr.o (section); \ + build/ROMID/game/crc.o (section); \ + build/ROMID/game/rng2.o (section); \ + build/ROMID/game/game_129210.o (section); \ + build/ROMID/game/explosions/explosions.o (section); \ + build/ROMID/game/smoke/smoke.o (section); \ + build/ROMID/game/sparks/sparks.o (section); \ + build/ROMID/game/weather/weather.o (section); \ + build/ROMID/game/sky.o (section); \ + build/ROMID/game/credits.o (section); \ + build/ROMID/game/game_13b670.o (section); \ + build/ROMID/game/game_13c510.o (section); \ + build/ROMID/game/wallhit.o (section); \ + build/ROMID/game/bondview.o (section); \ + build/ROMID/game/splat.o (section); \ + build/ROMID/game/camdraw.o (section); \ + build/ROMID/game/shards/shards.o (section); \ + build/ROMID/game/options.o (section); \ + build/ROMID/game/game_152fa0.o (section); \ + build/ROMID/game/game_1531a0.o (section); \ + build/ROMID/game/game_1577f0.o (section); \ + build/ROMID/game/bg.o (section); \ + build/ROMID/game/bgbss.o (section); \ + build/ROMID/game/game_165360.o (section); \ + build/ROMID/game/game_1655c0.o (section); \ + build/ROMID/game/game_165670.o (section); \ + build/ROMID/game/game_1657c0.o (section); \ + build/ROMID/game/game_1668e0.o (section); \ + build/ROMID/game/file.o (section); \ + build/ROMID/game/gfxmemory.o (section); \ + build/ROMID/game/lv.o (section); \ + build/ROMID/game/timing.o (section); \ + build/ROMID/game/music.o (section); \ + build/ROMID/game/lang.o (section); \ + build/ROMID/game/texdecompress.o (section); \ + build/ROMID/game/game_173520.o (section); \ + build/ROMID/game/game_173a00.o (section); \ + build/ROMID/game/stubs/game_175f50.o (section); \ + build/ROMID/game/game_175f90.o (section); \ + build/ROMID/game/stubs/game_176000.o (section); \ + build/ROMID/game/game_176080.o (section); \ + build/ROMID/game/utils.o (section); \ + build/ROMID/game/mplayer/ingame.o (section); \ + build/ROMID/game/mplayer/setup.o (section); \ + build/ROMID/game/mplayer/scenarios.o (section); \ + build/ROMID/game/mplayer/mplayer.o (section); \ + build/ROMID/game/radar.o (section); \ + build/ROMID/game/bot.o (section); \ + build/ROMID/game/botcmd.o (section); \ + build/ROMID/game/botinv.o (section); \ + build/ROMID/game/botact.o (section); \ + build/ROMID/game/mplayer/mpaicommands.o (section); \ + build/ROMID/game/vmstats.o (section); \ + build/ROMID/game/game_19aa80.o (section); \ + build/ROMID/game/training/training.o (section); \ + build/ROMID/game/training/menus.o (section); \ + build/ROMID/game/game_1a7560.o (section); \ + build/ROMID/game/game_1a78b0.o (section); diff --git a/ld/libfiles.pal-beta.inc b/ld/libfiles.pal-beta.inc new file mode 100644 index 000000000..7ff48dc43 --- /dev/null +++ b/ld/libfiles.pal-beta.inc @@ -0,0 +1,249 @@ +#define LIBFILES(section) \ + build/ROMID/lib/tlb.o (section); \ + build/ROMID/lib/segments.o (section); \ + build/ROMID/lib/boot.o (section); \ + build/ROMID/lib/sched.o (section); \ + build/ROMID/lib/reset.o (section); \ + build/ROMID/lib/ultra/os/maptlbrdb.o (section); \ + build/ROMID/lib/ultra/io/vimgr.o (section); \ + build/ROMID/lib/ultra/io/pimgr.o (section); \ + build/ROMID/lib/lib_034d0.o (section); \ + build/ROMID/lib/ultra/os/exceptvars.o (section); \ + build/ROMID/lib/ultra/os/exceptasm.o (section); \ + build/ROMID/lib/ultra/os/createthread.o (section); \ + build/ROMID/lib/ultra/gu/lookat.o (section); \ + build/ROMID/lib/ultra/gu/lookatref.o (section); \ + build/ROMID/lib/ultra/gu/normalize.o (section); \ + build/ROMID/lib/ultra/gu/perspective.o (section); \ + build/ROMID/lib/ultra/gu/rotate.o (section); \ + build/ROMID/lib/ultra/libc/xldtob.o (section); \ + build/ROMID/lib/ultra/io/pfsisplug.o (section); \ + build/ROMID/lib/ultra/libc/llcvt.o (section); \ + build/ROMID/lib/ultra/os/initialize.o (section); \ + build/ROMID/lib/ultra/io/sptask.o (section); \ + build/ROMID/lib/ultra/io/gbpakinit.o (section); \ + build/ROMID/lib/ultra/io/gbpakpower.o (section); \ + build/ROMID/lib/ultra/io/conteeplongwrite.o (section); \ + build/ROMID/lib/ultra/io/pfsresizefile.o (section); \ + build/ROMID/lib/ultra/io/pfsinitpak.o (section); \ + build/ROMID/lib/vm.o (section); \ + build/ROMID/lib/rzip.o (section); \ + build/ROMID/lib/audiomgr.o (section); \ + build/ROMID/lib/audiodma.o (section); \ + build/ROMID/lib/profile.o (section); \ + build/ROMID/lib/vi.o (section); \ + build/ROMID/lib/fault.o (section); \ + build/ROMID/lib/crash.o (section); \ + build/ROMID/lib/dma.o (section); \ + build/ROMID/lib/main.o (section); \ + build/ROMID/lib/snd.o (section); \ + build/ROMID/lib/music.o (section); \ + build/ROMID/lib/memp.o (section); \ + build/ROMID/lib/mema.o (section); \ + build/ROMID/lib/rng.o (section); \ + build/ROMID/lib/args.o (section); \ + build/ROMID/lib/str.o (section); \ + build/ROMID/lib/ultra/libc/sprintf.o (section); \ + build/ROMID/lib/pimgr.o (section); \ + build/ROMID/lib/videbug.o (section); \ + build/ROMID/lib/debughud.o (section); \ + build/ROMID/lib/base.o (section); \ + build/ROMID/lib/joy.o (section); \ + build/ROMID/lib/lib_15850.o (section); \ + build/ROMID/lib/gvars.o (section); \ + build/ROMID/lib/mtxasm.o (section); \ + build/ROMID/lib/mtx.o (section); \ + build/ROMID/lib/lib_17ce0.o (section); \ + build/ROMID/lib/ailist.o (section); \ + build/ROMID/lib/path.o (section); \ + build/ROMID/lib/modelasm.o (section); \ + build/ROMID/lib/model.o (section); \ + build/ROMID/lib/anim.o (section); \ + build/ROMID/lib/collision.o (section); \ + build/ROMID/lib/lib_2f490.o (section); \ + build/ROMID/lib/rdp.o (section); \ + build/ROMID/lib/rmon.o (section); \ + build/ROMID/lib/ultra/audio/heap.o (section); \ + build/ROMID/lib/naudio/n_sl.o (section); \ + build/ROMID/lib/lib_2fc60.o (section); \ + build/ROMID/lib/naudio/n_synthesizer.o (section); \ + build/ROMID/lib/ultra/audio/sl.o (section); \ + build/ROMID/lib/naudio/n_sndplayer.o (section); \ + build/ROMID/lib/speaker.o (section); \ + build/ROMID/lib/naudio/n_csplayer.o (section); \ + build/ROMID/lib/naudio/n_cspsetbank.o (section); \ + build/ROMID/lib/ultra/audio/bnkf.o (section); \ + build/ROMID/lib/mp3.o (section); \ + build/ROMID/lib/naudio/n_cspgetstate.o (section); \ + build/ROMID/lib/naudio/n_csq.o (section); \ + build/ROMID/lib/naudio/n_cspsetseq.o (section); \ + build/ROMID/lib/naudio/n_cspplay.o (section); \ + build/ROMID/lib/naudio/n_cspsetvol.o (section); \ + build/ROMID/lib/lib_39c80.o (section); \ + build/ROMID/lib/naudio/n_seqpstop.o (section); \ + build/ROMID/lib/naudio/n_syndelete.o (section); \ + build/ROMID/lib/ultra/audio/cents2ratio.o (section); \ + build/ROMID/lib/naudio/n_synallocfx.o (section); \ + build/ROMID/lib/naudio/n_reverb.o (section); \ + build/ROMID/lib/naudio/n_drvrNew.o (section); \ + build/ROMID/lib/naudio/n_save.o (section); \ + build/ROMID/lib/naudio/n_event.o (section); \ + build/ROMID/lib/naudio/n_synaddplayer.o (section); \ + build/ROMID/lib/naudio/n_synallocvoice.o (section); \ + build/ROMID/lib/naudio/n_synsetvol.o (section); \ + build/ROMID/lib/naudio/n_synstartvoiceparam.o (section); \ + build/ROMID/lib/naudio/n_synsetpan.o (section); \ + build/ROMID/lib/naudio/n_synsetpitch.o (section); \ + build/ROMID/lib/naudio/n_synsetfxmix.o (section); \ + build/ROMID/lib/naudio/n_synstopvoice.o (section); \ + build/ROMID/lib/naudio/n_synfreevoice.o (section); \ + build/ROMID/lib/naudio/n_seqplayer.o (section); \ + build/ROMID/lib/naudio/n_synfilter13.o (section); \ + build/ROMID/lib/naudio/n_synfilter12.o (section); \ + build/ROMID/lib/lib_3e3e0.o (section); \ + build/ROMID/lib/naudio/n_synsetfxparam.o (section); \ + build/ROMID/lib/naudio/n_synfilter11.o (section); \ + build/ROMID/lib/ultra/audio/cseq.o (section); \ + build/ROMID/lib/naudio/n_env.o (section); \ + build/ROMID/lib/mp3/decoder.o (section); \ + build/ROMID/lib/mp3/main.o (section); \ + build/ROMID/lib/naudio/n_cspsendmidi.o (section); \ + build/ROMID/lib/naudio/n_auxbus.o (section); \ + build/ROMID/lib/naudio/n_mainbus.o (section); \ + build/ROMID/lib/naudio/n_synsetpriority.o (section); \ + build/ROMID/lib/naudio/n_load.o (section); \ + build/ROMID/lib/naudio/n_resample2.o (section); \ + build/ROMID/lib/mp3/lib_45ed0.o (section); \ + build/ROMID/lib/mp3/util.o (section); \ + build/ROMID/lib/mp3/lib_46650.o (section); \ + build/ROMID/lib/mp3/lib_47550.o (section); \ + build/ROMID/lib/naudio/n_resample.o (section); \ + build/ROMID/lib/mp3/lib_47d20.o (section); \ + build/ROMID/lib/mp3/lib_47ef0.o (section); \ + build/ROMID/lib/ultra/io/vitbl.o (section); \ + build/ROMID/lib/ultra/os/writebackdcacheall.o (section); \ + build/ROMID/lib/ultra/os/invalicache.o (section); \ + build/ROMID/lib/ultra/os/getfpccsr.o (section); \ + build/ROMID/lib/ultra/os/setfpccsr.o (section); \ + build/ROMID/lib/ultra/os/startthread.o (section); \ + build/ROMID/lib/ultra/os/createmesgqueue.o (section); \ + build/ROMID/lib/ultra/os/stopthread.o (section); \ + build/ROMID/lib/ultra/os/setthreadpri.o (section); \ + build/ROMID/lib/ultra/os/getcount.o (section); \ + build/ROMID/lib/ultra/os/seteventmesg.o (section); \ + build/ROMID/lib/ultra/io/visetevent.o (section); \ + build/ROMID/lib/ultra/os/setintmask.o (section); \ + build/ROMID/lib/ultra/os/recvmesg.o (section); \ + build/ROMID/lib/ultra/io/vigetcurrframebuf.o (section); \ + build/ROMID/lib/ultra/io/vigetnextframebuf.o (section); \ + build/ROMID/lib/ultra/io/dpsetstat.o (section); \ + build/ROMID/lib/ultra/os/getthreadpri.o (section); \ + build/ROMID/lib/ultra/os/sendmesg.o (section); \ + build/ROMID/lib/ultra/os/stoptimer.o (section); \ + build/ROMID/lib/ultra/os/settimer.o (section); \ + build/ROMID/lib/ultra/io/sptaskyielded.o (section); \ + build/ROMID/lib/ultra/io/dpctr.o (section); \ + build/ROMID/lib/ultra/io/dpgetstat.o (section); \ + build/ROMID/lib/ultra/io/viblack.o (section); \ + build/ROMID/lib/ultra/io/visetmode.o (section); \ + build/ROMID/lib/ultra/io/visetxscale.o (section); \ + build/ROMID/lib/ultra/io/visetyscale.o (section); \ + build/ROMID/lib/ultra/io/visetspecial.o (section); \ + build/ROMID/lib/ultra/io/viswapbuf.o (section); \ + build/ROMID/lib/ultra/io/sptaskyield.o (section); \ + build/ROMID/lib/ultra/os/gettime.o (section); \ + build/ROMID/lib/ultra/os/timerintr.o (section); \ + build/ROMID/lib/ultra/os/interrupt.o (section); \ + build/ROMID/lib/ultra/io/vi.o (section); \ + build/ROMID/lib/ultra/io/vigetcurrcontext.o (section); \ + build/ROMID/lib/ultra/io/viswapcontext.o (section); \ + build/ROMID/lib/ultra/io/piacs.o (section); \ + build/ROMID/lib/ultra/io/pirawdma.o (section); \ + build/ROMID/lib/ultra/io/epirawdma.o (section); \ + build/ROMID/lib/ultra/io/devmgr.o (section); \ + build/ROMID/lib/ultra/os/thread.o (section); \ + build/ROMID/lib/ultra/os/destroythread.o (section); \ + build/ROMID/lib/ultra/gu/mtxutil.o (section); \ + build/ROMID/lib/ultra/gu/sqrtf.o (section); \ + build/ROMID/lib/ultra/libc/string.o (section); \ + build/ROMID/lib/ultra/libc/ldiv.o (section); \ + build/ROMID/lib/ultra/io/siacs.o (section); \ + build/ROMID/lib/ultra/io/sirawdma.o (section); \ + build/ROMID/lib/ultra/io/controller.o (section); \ + build/ROMID/lib/ultra/os/setsr.o (section); \ + build/ROMID/lib/ultra/os/getsr.o (section); \ + build/ROMID/lib/ultra/io/sirawread.o (section); \ + build/ROMID/lib/ultra/io/sirawwrite.o (section); \ + build/ROMID/lib/ultra/os/writebackdcache.o (section); \ + build/ROMID/lib/ultra/libc/bzero.o (section); \ + build/ROMID/lib/ultra/os/getcause.o (section); \ + build/ROMID/lib/ultra/libc/bcopy.o (section); \ + build/ROMID/lib/ultra/os/virtualtophysical.o (section); \ + build/ROMID/lib/ultra/io/spsetstat.o (section); \ + build/ROMID/lib/ultra/io/spsetpc.o (section); \ + build/ROMID/lib/ultra/io/sprawdma.o (section); \ + build/ROMID/lib/ultra/io/sp.o (section); \ + build/ROMID/lib/ultra/io/contramwrite.o (section); \ + build/ROMID/lib/ultra/io/contramread.o (section); \ + build/ROMID/lib/ultra/io/pfsgetstatus.o (section); \ + build/ROMID/lib/ultra/io/conteepwrite.o (section); \ + build/ROMID/lib/ultra/io/contpfs.o (section); \ + build/ROMID/lib/ultra/io/pfsfindfile.o (section); \ + build/ROMID/lib/ultra/io/pfsselectbank.o (section); \ + build/ROMID/lib/ultra/io/pfsfreeblocks.o (section); \ + build/ROMID/lib/ultra/io/pfsallocatefile.o (section); \ + build/ROMID/lib/ultra/io/pfsdeletefile.o (section); \ + build/ROMID/lib/ultra/io/pfschecker.o (section); \ + build/ROMID/lib/ultra/libc/bcmp.o (section); \ + build/ROMID/lib/ultra/os/maptlb.o (section); \ + build/ROMID/lib/ultra/io/aisetfreq.o (section); \ + build/ROMID/lib/ultra/libc/ll.o (section); \ + build/ROMID/lib/ultra/io/aisetnextbuf.o (section); \ + build/ROMID/lib/ultra/io/aigetlen.o (section); \ + build/ROMID/lib/ultra/os/invaldcache.o (section); \ + build/ROMID/lib/ultra/io/pidma.o (section); \ + build/ROMID/lib/ultra/os/getcurrfaultthread.o (section); \ + build/ROMID/lib/ultra/io/piread.o (section); \ + build/ROMID/lib/ultra/libc/xprintf.o (section); \ + build/ROMID/lib/ultra/io/contquery.o (section); \ + build/ROMID/lib/ultra/io/contreaddata.o (section); \ + build/ROMID/lib/ultra/io/motor.o (section); \ + build/ROMID/lib/ultra/gu/align.o (section); \ + build/ROMID/lib/ultra/gu/coss.o (section); \ + build/ROMID/lib/ultra/gu/sins.o (section); \ + build/ROMID/lib/ultra/gu/ortho.o (section); \ + build/ROMID/lib/ultra/gu/frustum.o (section); \ + build/ROMID/lib/ultra/gu/translate.o (section); \ + build/ROMID/lib/ultra/gu/scale.o (section); \ + build/ROMID/lib/ultra/io/conteepprobe.o (section); \ + build/ROMID/lib/ultra/io/conteepread.o (section); \ + build/ROMID/lib/ultra/io/conteeplongread.o (section); \ + build/ROMID/lib/ultra/io/pfsreadwritefile.o (section); \ + build/ROMID/lib/ultra/io/pfsnumfiles.o (section); \ + build/ROMID/lib/ultra/io/pfsfilestate.o (section); \ + build/ROMID/lib/ultra/io/gbpakgetstatus.o (section); \ + build/ROMID/lib/ultra/io/gbpakreadid.o (section); \ + build/ROMID/lib/ultra/io/gbpakcheckconnector.o (section); \ + build/ROMID/lib/ultra/io/gbpakreadwrite.o (section); \ + build/ROMID/lib/ultra/io/pfsinitpak2.o (section); \ + build/ROMID/lib/ultra/io/vimodepallan1.o (section); \ + build/ROMID/lib/ultra/io/vimodempallan1.o (section); \ + build/ROMID/lib/ultra/io/vimodentsclan1.o (section); \ + build/ROMID/lib/ultra/os/setcompare.o (section); \ + build/ROMID/lib/ultra/io/spgetstat.o (section); \ + build/ROMID/lib/ultra/os/resetglobalintmask.o (section); \ + build/ROMID/lib/ultra/io/epirawwrite.o (section); \ + build/ROMID/lib/ultra/io/epirawread.o (section); \ + build/ROMID/lib/ultra/os/setglobalintmask.o (section); \ + build/ROMID/lib/ultra/os/yieldthread.o (section); \ + build/ROMID/lib/ultra/io/si.o (section); \ + build/ROMID/lib/ultra/os/probetlb.o (section); \ + build/ROMID/lib/ultra/io/crc.o (section); \ + build/ROMID/lib/ultra/os/initialize2.o (section); \ + build/ROMID/lib/ultra/io/ai.o (section); \ + build/ROMID/lib/ultra/os/jammesg.o (section); \ + build/ROMID/lib/ultra/io/pigetcmdq.o (section); \ + build/ROMID/lib/ultra/io/pirawread.o (section); \ + build/ROMID/lib/ultra/libc/xlitob.o (section); \ + build/ROMID/lib/ultra/io/gbpakselectbank.o (section); \ + build/ROMID/lib/ultra/os/unmaptlball.o (section); diff --git a/ld/pd.ld b/ld/pd.ld index 219ad1e40..33a07cea1 100644 --- a/ld/pd.ld +++ b/ld/pd.ld @@ -5,9 +5,12 @@ #define VERSION_PAL_FINAL 4 #define VERSION_JPN_FINAL 5 -#if VERSION >= VERSION_PAL_BETA +#if VERSION >= VERSION_PAL_FINAL #include "gamefiles.pal-final.inc" #include "libfiles.pal-final.inc" +#elif VERSION >= VERSION_PAL_BETA +#include "gamefiles.pal-beta.inc" +#include "libfiles.pal-beta.inc" #elif VERSION >= VERSION_NTSC_1_0 #include "gamefiles.ntsc-final.inc" #include "libfiles.ntsc-final.inc" diff --git a/src/game/bondgun.c b/src/game/bondgun.c index 27be93734..3e1c4887a 100644 --- a/src/game/bondgun.c +++ b/src/game/bondgun.c @@ -557,7 +557,7 @@ f32 bgun0f09815c(struct hand *hand) return 0; } -#if VERSION >= VERSION_PAL_FINAL +#if VERSION >= VERSION_PAL_BETA GLOBAL_ASM( glabel bgun0f0981e8 .late_rodata diff --git a/src/game/debug2.c b/src/game/debug2.c index a06632a5b..5192698e2 100644 --- a/src/game/debug2.c +++ b/src/game/debug2.c @@ -657,7 +657,7 @@ bool debug0f11edb0(void) return var80078718nb; } -bool debug0f119954nb(void) +bool debug0f11edb8(void) { return var8007871cnb; } diff --git a/src/game/propobj.c b/src/game/propobj.c index a935ca4e4..04f72cc08 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -53170,13 +53170,13 @@ glabel var7f1aa838 /* f08079c: 3406ffff */ dli $a2,0xffff /* f0807a0: 0fc2433d */ jal func0f0926bc /* f0807a4: afa200a0 */ sw $v0,0xa0($sp) -/* f0807a8: 0fc46655 */ jal debug0f119954nb +/* f0807a8: 0fc46655 */ jal debug0f11edb8 /* f0807ac: afa00098 */ sw $zero,0x98($sp) -/* f0807b0: 0fc46655 */ jal debug0f119954nb +/* f0807b0: 0fc46655 */ jal debug0f11edb8 /* f0807b4: 00000000 */ sll $zero,$zero,0x0 /* f0807b8: 0c004d84 */ jal random /* f0807bc: 00000000 */ sll $zero,$zero,0x0 -/* f0807c0: 0fc46655 */ jal debug0f119954nb +/* f0807c0: 0fc46655 */ jal debug0f11edb8 /* f0807c4: afa20098 */ sw $v0,0x98($sp) /* f0807c8: 50400005 */ beqzl $v0,.NB0f0807e0 /* f0807cc: 8fa800d8 */ lw $t0,0xd8($sp) diff --git a/src/include/lib/audiomgr.h b/src/include/lib/audiomgr.h index 677d13643..c59a24f2f 100644 --- a/src/include/lib/audiomgr.h +++ b/src/include/lib/audiomgr.h @@ -6,7 +6,7 @@ void amgrAllocateStack(void); -#if VERSION >= VERSION_PAL_FINAL +#if VERSION >= VERSION_PAL_BETA void amgrCreate(ALSynConfig *config, u32 *settings); #else void amgrCreate(ALSynConfig *config); diff --git a/src/lib/audiodma.c b/src/lib/audiodma.c index 5489eb242..75e7e1af4 100644 --- a/src/lib/audiodma.c +++ b/src/lib/audiodma.c @@ -129,7 +129,7 @@ s32 admaExec(s32 offset, s32 len, void *state) */ void *admaNew(struct admastate **state) { -#if VERSION >= VERSION_PAL_FINAL +#if VERSION >= VERSION_PAL_BETA s32 max = ADMA_MAX_ITEMS; #else s32 max = IS4MB() ? ADMA_MAX_ITEMS - 20 : ADMA_MAX_ITEMS; diff --git a/src/lib/audiomgr.c b/src/lib/audiomgr.c index e24f29835..75dfcfc3d 100644 --- a/src/lib/audiomgr.c +++ b/src/lib/audiomgr.c @@ -50,7 +50,7 @@ void amgrAllocateStack(void) g_AudioSp = bootAllocateStack(THREAD_AUDIO, STACKSIZE_AUDIO); } -#if VERSION >= VERSION_PAL_FINAL +#if VERSION >= VERSION_PAL_BETA void amgrCreate(ALSynConfig *config, u32 *settings) #else void amgrCreate(ALSynConfig *config) @@ -62,7 +62,7 @@ void amgrCreate(ALSynConfig *config) config->outputRate = osAiSetFrequency(22020); config->dmaproc = admaNew; -#if VERSION >= VERSION_PAL_FINAL +#if VERSION >= VERSION_PAL_BETA freqpertick = settings[1] * (f32)config->outputRate / 25.0f; #else freqpertick = config->outputRate / 30.0f; @@ -90,7 +90,7 @@ void amgrCreate(ALSynConfig *config) var800918ec = 2000; -#if VERSION < VERSION_PAL_FINAL +#if VERSION < VERSION_PAL_BETA if (IS4MB()) { var800918ec >>= 1; } @@ -174,7 +174,7 @@ void amgrMain(void *arg) static u32 var8005d514 = 1; -#if VERSION >= VERSION_PAL_FINAL +#if VERSION >= VERSION_PAL_BETA osScAddClient(&g_Sched, &var800918d0, &g_AudioManager.audioFrameMsgQ, true); #else osScAddClient(&g_Sched, &var800918d0, &g_AudioManager.audioFrameMsgQ, !IS4MB()); diff --git a/src/lib/crash.c b/src/lib/crash.c index 8d1dce436..9656dabaf 100644 --- a/src/lib/crash.c +++ b/src/lib/crash.c @@ -183,35 +183,75 @@ void crashCreateThread(void) osStartThread(&g_FaultThread); } -#if VERSION >= VERSION_NTSC_1_0 -void faultproc(void *arg0) -{ - OSMesg msg = 0; - OSIntMask mask; - u32 callstack[10]; - s32 tracelen; - static OSThread *curr; - static OSThread *last; - - osSetEventMesg(OS_EVENT_FAULT, &g_FaultMesgQueue, (OSMesg) MSG_FAULT); - last = NULL; - - while (true) { - do { - osRecvMesg(&g_FaultMesgQueue, &msg, OS_MESG_BLOCK); - mask = osSetIntMask(1); - curr = __osGetCurrFaultedThread(); - } while (!curr); - - osSetIntMask(mask); - -#if VERSION < VERSION_NTSC_1_0 - crashGenerate(curr, callstack, &tracelen); - schedSetCrashedUnexpectedly(true); -#endif - } -} -#else +#if VERSION == VERSION_PAL_BETA +GLOBAL_ASM( +glabel faultproc +/* bd9c: 27bdff98 */ addiu $sp,$sp,-104 +/* bda0: afb10018 */ sw $s1,0x18($sp) +/* bda4: 3c118009 */ lui $s1,0x8009 +/* bda8: 26316f90 */ addiu $s1,$s1,0x6f90 +/* bdac: afbf002c */ sw $ra,0x2c($sp) +/* bdb0: afa40068 */ sw $a0,0x68($sp) +/* bdb4: afb50028 */ sw $s5,0x28($sp) +/* bdb8: afb40024 */ sw $s4,0x24($sp) +/* bdbc: afb30020 */ sw $s3,0x20($sp) +/* bdc0: afb2001c */ sw $s2,0x1c($sp) +/* bdc4: afb00014 */ sw $s0,0x14($sp) +/* bdc8: afa00064 */ sw $zero,0x64($sp) +/* bdcc: 2404000c */ li $a0,0xc +/* bdd0: 02202825 */ move $a1,$s1 +/* bdd4: 0c0122b8 */ jal 0x48ae0 +/* bdd8: 24060010 */ li $a2,0x10 +/* bddc: 3c018009 */ lui $at,0x8009 +/* bde0: 3c138006 */ lui $s3,0x8006 +/* bde4: ac206fb0 */ sw $zero,0x6fb0($at) +/* bde8: 2673df40 */ addiu $s3,$s3,-8384 +/* bdec: 27b50034 */ addiu $s5,$sp,0x34 +/* bdf0: 27b40038 */ addiu $s4,$sp,0x38 +/* bdf4: 27b20064 */ addiu $s2,$sp,0x64 +.PB0000bdf8: +/* bdf8: 02202025 */ move $a0,$s1 +.PB0000bdfc: +/* bdfc: 02402825 */ move $a1,$s2 +/* be00: 0c01232c */ jal 0x48cb0 +/* be04: 24060001 */ li $a2,0x1 +/* be08: 0c012304 */ jal 0x48c10 +/* be0c: 24040001 */ li $a0,0x1 +/* be10: 0c013b00 */ jal 0x4ec00 +/* be14: 00408025 */ move $s0,$v0 +/* be18: 3c018009 */ lui $at,0x8009 +/* be1c: 1040fff6 */ beqz $v0,.PB0000bdf8 +/* be20: ac226fac */ sw $v0,0x6fac($at) +/* be24: 0c012304 */ jal 0x48c10 +/* be28: 02002025 */ move $a0,$s0 +/* be2c: 8e6e0000 */ lw $t6,0x0($s3) +/* be30: 51c0fff2 */ beqzl $t6,.PB0000bdfc +/* be34: 02202025 */ move $a0,$s1 +/* be38: 3c048009 */ lui $a0,0x8009 +/* be3c: 8c846fac */ lw $a0,0x6fac($a0) +/* be40: 02802825 */ move $a1,$s4 +/* be44: 0c0030b1 */ jal 0xc2c4 +/* be48: 02a03025 */ move $a2,$s5 +/* be4c: 0c0006c7 */ jal 0x1b1c +/* be50: 24040001 */ li $a0,0x1 +/* be54: 1000ffe9 */ b .PB0000bdfc +/* be58: 02202025 */ move $a0,$s1 +/* be5c: 00000000 */ nop +/* be60: 00000000 */ nop +/* be64: 00000000 */ nop +/* be68: 00000000 */ nop +/* be6c: 00000000 */ nop +/* be70: 8fbf002c */ lw $ra,0x2c($sp) +/* be74: 8fb00014 */ lw $s0,0x14($sp) +/* be78: 8fb10018 */ lw $s1,0x18($sp) +/* be7c: 8fb2001c */ lw $s2,0x1c($sp) +/* be80: 8fb30020 */ lw $s3,0x20($sp) +/* be84: 8fb40024 */ lw $s4,0x24($sp) +/* be88: 8fb50028 */ lw $s5,0x28($sp) +/* be8c: 03e00008 */ jr $ra +/* be90: 27bd0068 */ addiu $sp,$sp,0x68 +); +#elif VERSION == VERSION_NTSC_BETA GLOBAL_ASM( glabel faultproc /* c270: 27bdff98 */ addiu $sp,$sp,-104 @@ -273,6 +313,34 @@ glabel faultproc /* c348: 03e00008 */ jr $ra /* c34c: 27bd0068 */ addiu $sp,$sp,0x68 ); +#else +void faultproc(void *arg0) +{ + OSMesg msg = 0; + OSIntMask mask; + u32 callstack[10]; + s32 tracelen; + static OSThread *curr; + static OSThread *last; + + osSetEventMesg(OS_EVENT_FAULT, &g_FaultMesgQueue, (OSMesg) MSG_FAULT); + last = NULL; + + while (true) { + do { + osRecvMesg(&g_FaultMesgQueue, &msg, OS_MESG_BLOCK); + mask = osSetIntMask(1); + curr = __osGetCurrFaultedThread(); + } while (!curr); + + osSetIntMask(mask); + +#if VERSION == VERSION_NTSC_BETA + crashGenerate(curr, callstack, &tracelen); + schedSetCrashedUnexpectedly(true); +#endif + } +} #endif /** @@ -1409,81 +1477,101 @@ void crashScroll(s32 numlines) } } -#if VERSION >= VERSION_NTSC_1_0 -/** - * Render a character to the crash buffer. - * - * It looks like the character rendering code has been removed however, - * so it's just borders that remain. - */ -void crashRenderChar(s32 x, s32 y, char c) -{ - s32 i; - s32 j; - s32 width; - u16 *fbpos; - bool hires; - s32 tmp; - u32 a2; - - width = viGetWidth(); - - if (c == '\0') { - c = ' '; - } - - if (c < ' ' || c > '~') { - return; - } - - hires = (width == 640); - - if (hires) { - fbpos = g_CrashFrameBuffer + x * 2 + y * width; - } else { - fbpos = g_CrashFrameBuffer + x + y * width; - } - - a2 = 0; - - for (i = 0; i < 7; i++) { - for (j = 0; j < 4; j++) { - // gray occurs every 32nd pixel - u32 gray = a2 & 0x80000000; - - if (gray) { - fbpos[0] = GPACK_RGBA5551(120, 120, 120, 1); - } else { - fbpos[0] = GPACK_RGBA5551(0, 0, 0, 1); - } - - if (hires) { - if (gray) { - fbpos[1] = GPACK_RGBA5551(120, 120, 120, 1); - } else { - fbpos[1] = GPACK_RGBA5551(0, 0, 0, 1); - } - } - - fbpos++; - - if (hires) { - fbpos++; - } - - a2 *= 2; - } - - if (hires) { - fbpos += width; - fbpos -= 8; - } else { - fbpos += width; - fbpos -= 4; - } - } -} -#else +#if VERSION == VERSION_PAL_BETA +GLOBAL_ASM( +glabel crashRenderChar +/* cb44: 27bdffe8 */ addiu $sp,$sp,-24 +/* cb48: afbf0014 */ sw $ra,0x14($sp) +/* cb4c: afa40018 */ sw $a0,0x18($sp) +/* cb50: afa5001c */ sw $a1,0x1c($sp) +/* cb54: 0c002e4d */ jal 0xb934 +/* cb58: afa60020 */ sw $a2,0x20($sp) +/* cb5c: 93a30023 */ lbu $v1,0x23($sp) +/* cb60: 8fa50018 */ lw $a1,0x18($sp) +/* cb64: 8fa6001c */ lw $a2,0x1c($sp) +/* cb68: 54600003 */ bnezl $v1,.PB0000cb78 +/* cb6c: 28610020 */ slti $at,$v1,0x20 +/* cb70: 24030020 */ li $v1,0x20 +/* cb74: 28610020 */ slti $at,$v1,0x20 +.PB0000cb78: +/* cb78: 1420003d */ bnez $at,.PB0000cc70 +/* cb7c: 2861007f */ slti $at,$v1,0x7f +/* cb80: 1020003b */ beqz $at,.PB0000cc70 +/* cb84: 38490280 */ xori $t1,$v0,0x280 +/* cb88: 2d290001 */ sltiu $t1,$t1,0x1 +/* cb8c: 1120000a */ beqz $t1,.PB0000cbb8 +/* cb90: 00006025 */ move $t4,$zero +/* cb94: 00c20019 */ multu $a2,$v0 +/* cb98: 3c188006 */ lui $t8,0x8006 +/* cb9c: 8f18e4a4 */ lw $t8,-0x1b5c($t8) +/* cba0: 00057880 */ sll $t7,$a1,0x2 +/* cba4: 01f8c821 */ addu $t9,$t7,$t8 +/* cba8: 00007012 */ mflo $t6 +/* cbac: 000e7840 */ sll $t7,$t6,0x1 +/* cbb0: 10000009 */ b .PB0000cbd8 +/* cbb4: 032f2021 */ addu $a0,$t9,$t7 +.PB0000cbb8: +/* cbb8: 00c20019 */ multu $a2,$v0 +/* cbbc: 3c0e8006 */ lui $t6,0x8006 +/* cbc0: 8dcee4a4 */ lw $t6,-0x1b5c($t6) +/* cbc4: 0005c040 */ sll $t8,$a1,0x1 +/* cbc8: 030ec821 */ addu $t9,$t8,$t6 +/* cbcc: 00007812 */ mflo $t7 +/* cbd0: 000fc040 */ sll $t8,$t7,0x1 +/* cbd4: 03382021 */ addu $a0,$t9,$t8 +.PB0000cbd8: +/* cbd8: 00037080 */ sll $t6,$v1,0x2 +/* cbdc: 3c068006 */ lui $a2,0x8006 +/* cbe0: 00ce3021 */ addu $a2,$a2,$t6 +/* cbe4: 8cc6e2a8 */ lw $a2,-0x1d58($a2) +/* cbe8: 00026840 */ sll $t5,$v0,0x1 +/* cbec: 241f0007 */ li $ra,0x7 +/* cbf0: 240b0004 */ li $t3,0x4 +/* cbf4: 3c0a8000 */ lui $t2,0x8000 +/* cbf8: 24080001 */ li $t0,0x1 +/* cbfc: 24077bdf */ li $a3,0x7bdf +/* cc00: 00002825 */ move $a1,$zero +.PB0000cc04: +/* cc04: 00ca1824 */ and $v1,$a2,$t2 +/* cc08: 10600003 */ beqz $v1,.PB0000cc18 +/* cc0c: 00067840 */ sll $t7,$a2,0x1 +/* cc10: 10000002 */ b .PB0000cc1c +/* cc14: a4870000 */ sh $a3,0x0($a0) +.PB0000cc18: +/* cc18: a4880000 */ sh $t0,0x0($a0) +.PB0000cc1c: +/* cc1c: 11200006 */ beqz $t1,.PB0000cc38 +/* cc20: 24a50001 */ addiu $a1,$a1,0x1 +/* cc24: 50600004 */ beqzl $v1,.PB0000cc38 +/* cc28: a4880002 */ sh $t0,0x2($a0) +/* cc2c: 10000002 */ b .PB0000cc38 +/* cc30: a4870002 */ sh $a3,0x2($a0) +/* cc34: a4880002 */ sh $t0,0x2($a0) +.PB0000cc38: +/* cc38: 11200002 */ beqz $t1,.PB0000cc44 +/* cc3c: 24840002 */ addiu $a0,$a0,0x2 +/* cc40: 24840002 */ addiu $a0,$a0,0x2 +.PB0000cc44: +/* cc44: 14abffef */ bne $a1,$t3,.PB0000cc04 +/* cc48: 01e03025 */ move $a2,$t7 +/* cc4c: 11200004 */ beqz $t1,.PB0000cc60 +/* cc50: 258c0001 */ addiu $t4,$t4,0x1 +/* cc54: 008d2021 */ addu $a0,$a0,$t5 +/* cc58: 10000003 */ b .PB0000cc68 +/* cc5c: 2484fff0 */ addiu $a0,$a0,-16 +.PB0000cc60: +/* cc60: 008d2021 */ addu $a0,$a0,$t5 +/* cc64: 2484fff8 */ addiu $a0,$a0,-8 +.PB0000cc68: +/* cc68: 559fffe6 */ bnel $t4,$ra,.PB0000cc04 +/* cc6c: 00002825 */ move $a1,$zero +.PB0000cc70: +/* cc70: 8fbf0014 */ lw $ra,0x14($sp) +/* cc74: 27bd0018 */ addiu $sp,$sp,0x18 +/* cc78: 03e00008 */ jr $ra +/* cc7c: 00000000 */ nop +); +#elif VERSION == VERSION_NTSC_BETA GLOBAL_ASM( glabel crashRenderChar /* d398: 27bdffe8 */ addiu $sp,$sp,-24 @@ -1577,26 +1665,114 @@ glabel crashRenderChar /* d4cc: 03e00008 */ jr $ra /* d4d0: 00000000 */ sll $zero,$zero,0x0 ); -#endif - -#if VERSION >= VERSION_NTSC_1_0 -void crashReset(void) +#else +/** + * Render a character to the crash buffer. + * + * It looks like the character rendering code has been removed however, + * so it's just borders that remain. + */ +void crashRenderChar(s32 x, s32 y, char c) { - g_CrashCharBuffer = NULL; + s32 i; + s32 j; + s32 width; + u16 *fbpos; + bool hires; + s32 tmp; + u32 a2; - if (g_CrashCharBuffer) { - // Unreachable - s32 x; - s32 y; + width = viGetWidth(); - for (y = 0; y < 30; y++) { - for (x = 0; x < 71; x++) { - g_CrashCharBuffer[y][x] = '\0'; + if (c == '\0') { + c = ' '; + } + + if (c < ' ' || c > '~') { + return; + } + + hires = (width == 640); + + if (hires) { + fbpos = g_CrashFrameBuffer + x * 2 + y * width; + } else { + fbpos = g_CrashFrameBuffer + x + y * width; + } + + a2 = 0; + + for (i = 0; i < 7; i++) { + for (j = 0; j < 4; j++) { + // gray occurs every 32nd pixel + u32 gray = a2 & 0x80000000; + + if (gray) { + fbpos[0] = GPACK_RGBA5551(120, 120, 120, 1); + } else { + fbpos[0] = GPACK_RGBA5551(0, 0, 0, 1); } + + if (hires) { + if (gray) { + fbpos[1] = GPACK_RGBA5551(120, 120, 120, 1); + } else { + fbpos[1] = GPACK_RGBA5551(0, 0, 0, 1); + } + } + + fbpos++; + + if (hires) { + fbpos++; + } + + a2 *= 2; + } + + if (hires) { + fbpos += width; + fbpos -= 8; + } else { + fbpos += width; + fbpos -= 4; } } } -#else +#endif + +#if VERSION == VERSION_PAL_BETA +GLOBAL_ASM( +glabel crashReset +/* cc80: 3c048006 */ lui $a0,0x8006 +/* cc84: 3c0e8009 */ lui $t6,0x8009 +/* cc88: 2484e324 */ addiu $a0,$a0,-7388 +/* cc8c: 25ce6fb8 */ addiu $t6,$t6,0x6fb8 +/* cc90: 11c00012 */ beqz $t6,.PB0000ccdc +/* cc94: ac8e0000 */ sw $t6,0x0($a0) +/* cc98: 00001025 */ move $v0,$zero +/* cc9c: 2406001e */ li $a2,0x1e +/* cca0: 24050047 */ li $a1,0x47 +/* cca4: 00001825 */ move $v1,$zero +.PB0000cca8: +/* cca8: 0002c8c0 */ sll $t9,$v0,0x3 +/* ccac: 8c980000 */ lw $t8,0x0($a0) +/* ccb0: 0322c821 */ addu $t9,$t9,$v0 +/* ccb4: 0019c8c0 */ sll $t9,$t9,0x3 +/* ccb8: 0322c823 */ subu $t9,$t9,$v0 +/* ccbc: 03194021 */ addu $t0,$t8,$t9 +/* ccc0: 01034821 */ addu $t1,$t0,$v1 +/* ccc4: 24630001 */ addiu $v1,$v1,0x1 +/* ccc8: 1465fff7 */ bne $v1,$a1,.PB0000cca8 +/* cccc: a1200000 */ sb $zero,0x0($t1) +/* ccd0: 24420001 */ addiu $v0,$v0,0x1 +/* ccd4: 5446fff4 */ bnel $v0,$a2,.PB0000cca8 +/* ccd8: 00001825 */ move $v1,$zero +.PB0000ccdc: +/* ccdc: 03e00008 */ jr $ra +/* cce0: 00000000 */ nop +); +#elif VERSION == VERSION_NTSC_BETA GLOBAL_ASM( glabel crashReset /* d4d4: 3c048006 */ lui $a0,0x8006 @@ -1627,6 +1803,23 @@ glabel crashReset /* d530: 03e00008 */ jr $ra /* d534: 00000000 */ sll $zero,$zero,0x0 ); +#else +void crashReset(void) +{ + g_CrashCharBuffer = NULL; + + if (g_CrashCharBuffer) { + // Unreachable + s32 x; + s32 y; + + for (y = 0; y < 30; y++) { + for (x = 0; x < 71; x++) { + g_CrashCharBuffer[y][x] = '\0'; + } + } + } +} #endif void crashRenderFrame(u8 *fb) diff --git a/src/lib/debughud.c b/src/lib/debughud.c index a398a24f7..85c6a1e57 100644 --- a/src/lib/debughud.c +++ b/src/lib/debughud.c @@ -22,7 +22,7 @@ struct dhudchar { u8 paletteindex; }; -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA || VERSION == VERSION_PAL_BETA struct dhudchar g_DHudCharBuffer[NUM_COLS][NUM_ROWS]; Gfx g_DHudFgGbi[MAX_COLOURS]; Gfx g_DHudBgGbi[MAX_COLOURS]; @@ -90,21 +90,21 @@ Gfx g_DHudFgColour = gsDPSetPrimColor(0, 0, 0xff, 0xff, 0xff, 0); Gfx g_DHudBgColour = gsDPSetEnvColor(0, 0, 0, 0); #endif -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA || VERSION == VERSION_PAL_BETA s32 dhud00013fe0nb(s32 arg0, s32 arg1) { return 0; } #endif -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA || VERSION == VERSION_PAL_BETA s32 dhud00013ff0nb(s32 arg0, s32 arg1) { return 0; } #endif -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA || VERSION == VERSION_PAL_BETA void dhud00014000nb(void) { // empty @@ -113,7 +113,7 @@ void dhud00014000nb(void) void dhudInit(void) { -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA || VERSION == VERSION_PAL_BETA s32 i; s32 x; s32 y; @@ -143,14 +143,14 @@ void dhudInit(void) void dhudTryReset(void) { -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA || VERSION == VERSION_PAL_BETA if (g_DHudInitialised) { dhudReset(); } #endif } -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA || VERSION == VERSION_PAL_BETA void dhudPutCharAt(s32 x, s32 y, char c) { s32 i; @@ -181,7 +181,7 @@ havepalette: void dhudResetPos(void) { -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA || VERSION == VERSION_PAL_BETA if (g_DHudInitialised) { g_DHudPosX = g_DHudBaseX; g_DHudPosY = g_DHudBaseY; @@ -191,7 +191,7 @@ void dhudResetPos(void) void dhudReset(void) { -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA || VERSION == VERSION_PAL_BETA s32 x; s32 y; @@ -214,7 +214,7 @@ void dhudReset(void) void dhudSetPos(s32 x, s32 y) { -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA || VERSION == VERSION_PAL_BETA if (g_DHudInitialised) { x += g_DHudBaseX; y += g_DHudBaseY; @@ -231,7 +231,7 @@ void dhudSetPos(s32 x, s32 y) void dhudSetFgColour(s32 r, s32 g, s32 b, s32 a) { -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA || VERSION == VERSION_PAL_BETA if (g_DHudInitialised) { g_DHudFgColour.words.w1 = r << 24 | g << 16 | b << 8 | (255 - a); } @@ -240,7 +240,7 @@ void dhudSetFgColour(s32 r, s32 g, s32 b, s32 a) void dhudSetBgColour(s32 r, s32 g, s32 b, s32 a) { -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA || VERSION == VERSION_PAL_BETA if (g_DHudInitialised) { g_DHudBgColour.words.w1 = r << 24 | g << 16 | b << 8 | (255 - a); } @@ -249,7 +249,7 @@ void dhudSetBgColour(s32 r, s32 g, s32 b, s32 a) void dhudPrintChar(u8 c) { -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA || VERSION == VERSION_PAL_BETA s32 maxwidth = (viGetWidth() - 13) / CHAR_W; s32 maxheight = (viGetHeight() - 10) / CHAR_H; @@ -272,19 +272,21 @@ void dhudPrintChar(u8 c) #endif } +#if VERSION != VERSION_PAL_BETA void dhudPrintCharAt(s32 x, s32 y, char c) { -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA if (g_DHudInitialised) { dhudSetPos(x, y); dhudPrintChar(c); } #endif } +#endif void dhudPrintString(char *str) { -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA || VERSION == VERSION_PAL_BETA if (g_DHudInitialised) { while (*str != '\0') { dhudPrintChar(*str++); @@ -293,9 +295,10 @@ void dhudPrintString(char *str) #endif } +#if VERSION != VERSION_PAL_BETA void dhudPrintStringAt(s32 x, s32 y, char *str) { -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA || VERSION == VERSION_PAL_BETA if (g_DHudInitialised) { dhudSetPos(x, y); @@ -305,10 +308,11 @@ void dhudPrintStringAt(s32 x, s32 y, char *str) } #endif } +#endif Gfx *dhudRender(Gfx *gdl) { -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA || VERSION == VERSION_PAL_BETA if (!g_DHudInitialised) { return gdl; } diff --git a/src/lib/main.c b/src/lib/main.c index 5db72859c..322499a6f 100644 --- a/src/lib/main.c +++ b/src/lib/main.c @@ -695,6 +695,431 @@ glabel mainInit /* d838: 03e00008 */ jr $ra /* d83c: 00000000 */ nop ); +#elif VERSION >= VERSION_PAL_BETA +GLOBAL_ASM( +glabel mainInit +/* d2b0: 27bdeb20 */ addiu $sp,$sp,-5344 +/* d2b4: afbf002c */ sw $ra,0x2c($sp) +/* d2b8: 0c002f38 */ jal 0xbce0 +/* d2bc: afb00028 */ sw $s0,0x28($sp) +/* d2c0: 0c00338c */ jal 0xce30 +/* d2c4: 00000000 */ nop +/* d2c8: 0c002258 */ jal 0x8960 +/* d2cc: 00000000 */ nop +/* d2d0: 0c0058ac */ jal 0x162b0 +/* d2d4: 00000000 */ nop +/* d2d8: 0c004890 */ jal 0x12240 +/* d2dc: 00000000 */ nop +/* d2e0: 0c004aaf */ jal 0x12abc +/* d2e4: 00000000 */ nop +/* d2e8: 0c004e46 */ jal 0x13918 +/* d2ec: 00000000 */ nop +/* d2f0: 0c002668 */ jal 0x99a0 +/* d2f4: 00000000 */ nop +/* d2f8: 0c00bff2 */ jal 0x2ffc8 +/* d2fc: 00000000 */ nop +/* d300: 3c018006 */ lui $at,0x8006 +/* d304: 0c0051b7 */ jal 0x146dc +/* d308: ac22e4c0 */ sw $v0,-0x1b40($at) +/* d30c: 27a41498 */ addiu $a0,$sp,0x1498 +/* d310: 27a514d4 */ addiu $a1,$sp,0x14d4 +/* d314: 0c012240 */ jal 0x48900 +/* d318: 24060001 */ li $a2,0x1 +/* d31c: 00008025 */ move $s0,$zero +/* d320: 3c070047 */ lui $a3,0x47 +.PB0000d324: +/* d324: 240e0000 */ li $t6,0x0 +/* d328: 240f0000 */ li $t7,0x0 +/* d32c: 27b81498 */ addiu $t8,$sp,0x1498 +/* d330: 27b914d4 */ addiu $t9,$sp,0x14d4 +/* d334: afb9001c */ sw $t9,0x1c($sp) +/* d338: afb80018 */ sw $t8,0x18($sp) +/* d33c: afaf0014 */ sw $t7,0x14($sp) +/* d340: afae0010 */ sw $t6,0x10($sp) +/* d344: 34e7868c */ ori $a3,$a3,0x868c +/* d348: 27a414b0 */ addiu $a0,$sp,0x14b0 +/* d34c: 0c012438 */ jal 0x490e0 +/* d350: 24060000 */ li $a2,0x0 +/* d354: 27a41498 */ addiu $a0,$sp,0x1498 +/* d358: 27a514d4 */ addiu $a1,$sp,0x14d4 +/* d35c: 0c01232c */ jal 0x48cb0 +/* d360: 24060001 */ li $a2,0x1 +/* d364: 24010001 */ li $at,0x1 +/* d368: 56010006 */ bnel $s0,$at,.PB0000d384 +/* d36c: 2a010002 */ slti $at,$s0,0x2 +/* d370: 0c005211 */ jal 0x14844 +/* d374: 00000000 */ nop +/* d378: 10000007 */ b .PB0000d398 +/* d37c: 26100001 */ addiu $s0,$s0,0x1 +/* d380: 2a010002 */ slti $at,$s0,0x2 +.PB0000d384: +/* d384: 54200004 */ bnezl $at,.PB0000d398 +/* d388: 26100001 */ addiu $s0,$s0,0x1 +/* d38c: 0c00534e */ jal 0x14d38 +/* d390: 00000000 */ nop +/* d394: 26100001 */ addiu $s0,$s0,0x1 +.PB0000d398: +/* d398: 24010004 */ li $at,0x4 +/* d39c: 5601ffe1 */ bnel $s0,$at,.PB0000d324 +/* d3a0: 3c070047 */ lui $a3,0x47 +/* d3a4: 3c057005 */ lui $a1,0x7005 +/* d3a8: 24a543f8 */ addiu $a1,$a1,0x43f8 +/* d3ac: 0c004c74 */ jal 0x131d0 +/* d3b0: 24040001 */ li $a0,0x1 +/* d3b4: 14400004 */ bnez $v0,.PB0000d3c8 +/* d3b8: 00002025 */ move $a0,$zero +/* d3bc: 240b0001 */ li $t3,0x1 +/* d3c0: 3c018006 */ lui $at,0x8006 +/* d3c4: ac2be4c0 */ sw $t3,-0x1b40($at) +.PB0000d3c8: +/* d3c8: 0c00566a */ jal 0x159a8 +/* d3cc: 24051000 */ li $a1,0x1000 +/* d3d0: 1440000f */ bnez $v0,.PB0000d410 +/* d3d4: 24040001 */ li $a0,0x1 +/* d3d8: 0c00566a */ jal 0x159a8 +/* d3dc: 24051000 */ li $a1,0x1000 +/* d3e0: 1440000b */ bnez $v0,.PB0000d410 +/* d3e4: 24040002 */ li $a0,0x2 +/* d3e8: 0c00566a */ jal 0x159a8 +/* d3ec: 24051000 */ li $a1,0x1000 +/* d3f0: 14400007 */ bnez $v0,.PB0000d410 +/* d3f4: 24040003 */ li $a0,0x3 +/* d3f8: 0c00566a */ jal 0x159a8 +/* d3fc: 24051000 */ li $a1,0x1000 +/* d400: 14400003 */ bnez $v0,.PB0000d410 +/* d404: 3c018006 */ lui $at,0x8006 +/* d408: 10000004 */ b .PB0000d41c +/* d40c: ac20e4e4 */ sw $zero,-0x1b1c($at) +.PB0000d410: +/* d410: 240c0001 */ li $t4,0x1 +/* d414: 3c018006 */ lui $at,0x8006 +/* d418: ac2ce4e4 */ sw $t4,-0x1b1c($at) +.PB0000d41c: +/* d41c: 00002025 */ move $a0,$zero +/* d420: 0c00566a */ jal 0x159a8 +/* d424: 2405000f */ li $a1,0xf +/* d428: 2410000f */ li $s0,0xf +/* d42c: 1202000c */ beq $s0,$v0,.PB0000d460 +/* d430: 24040001 */ li $a0,0x1 +/* d434: 0c00566a */ jal 0x159a8 +/* d438: 2405000f */ li $a1,0xf +/* d43c: 12020008 */ beq $s0,$v0,.PB0000d460 +/* d440: 24040002 */ li $a0,0x2 +/* d444: 0c00566a */ jal 0x159a8 +/* d448: 2405000f */ li $a1,0xf +/* d44c: 12020004 */ beq $s0,$v0,.PB0000d460 +/* d450: 24040003 */ li $a0,0x3 +/* d454: 0c00566a */ jal 0x159a8 +/* d458: 2405000f */ li $a1,0xf +/* d45c: 16020003 */ bne $s0,$v0,.PB0000d46c +.PB0000d460: +/* d460: 240d0001 */ li $t5,0x1 +/* d464: 3c018006 */ lui $at,0x8006 +/* d468: ac2ddf40 */ sw $t5,-0x20c0($at) +.PB0000d46c: +/* d46c: 3c0f8006 */ lui $t7,0x8006 +/* d470: afa01478 */ sw $zero,0x1478($sp) +/* d474: 25efe82c */ addiu $t7,$t7,-6100 +/* d478: 8de10000 */ lw $at,0x0($t7) +/* d47c: 8deb0004 */ lw $t3,0x4($t7) +/* d480: 27ae1458 */ addiu $t6,$sp,0x1458 +/* d484: adc10000 */ sw $at,0x0($t6) +/* d488: adcb0004 */ sw $t3,0x4($t6) +/* d48c: 8deb000c */ lw $t3,0xc($t7) +/* d490: 8de10008 */ lw $at,0x8($t7) +/* d494: adcb000c */ sw $t3,0xc($t6) +/* d498: adc10008 */ sw $at,0x8($t6) +/* d49c: 8de10010 */ lw $at,0x10($t7) +/* d4a0: 8deb0014 */ lw $t3,0x14($t7) +/* d4a4: adc10010 */ sw $at,0x10($t6) +/* d4a8: adcb0014 */ sw $t3,0x14($t6) +/* d4ac: 8deb001c */ lw $t3,0x1c($t7) +/* d4b0: 8de10018 */ lw $at,0x18($t7) +/* d4b4: adcb001c */ sw $t3,0x1c($t6) +/* d4b8: 0c0005b0 */ jal 0x16c0 +/* d4bc: adc10018 */ sw $at,0x18($t6) +/* d4c0: 3c010040 */ lui $at,0x40 +/* d4c4: 34210001 */ ori $at,$at,0x1 +/* d4c8: 0041082a */ slt $at,$v0,$at +/* d4cc: 1020000e */ beqz $at,.PB0000d508 +/* d4d0: 3c0e8006 */ lui $t6,0x8006 +/* d4d4: 3c0c8006 */ lui $t4,0x8006 +/* d4d8: 8d8cd914 */ lw $t4,-0x26ec($t4) +/* d4dc: 3c19803f */ lui $t9,0x803f +/* d4e0: 373950b8 */ ori $t9,$t9,0x50b8 +/* d4e4: 3c01ffef */ lui $at,0xffef +/* d4e8: 000c68c0 */ sll $t5,$t4,0x3 +/* d4ec: 032d1023 */ subu $v0,$t9,$t5 +/* d4f0: 34214000 */ ori $at,$at,0x4000 +/* d4f4: 00411021 */ addu $v0,$v0,$at +/* d4f8: 30581fff */ andi $t8,$v0,0x1fff +/* d4fc: 00581023 */ subu $v0,$v0,$t8 +/* d500: 10000002 */ b .PB0000d50c +/* d504: 2442e380 */ addiu $v0,$v0,-7296 +.PB0000d508: +/* d508: 3c028080 */ lui $v0,0x8080 +.PB0000d50c: +/* d50c: 8dcee4e4 */ lw $t6,-0x1b1c($t6) +/* d510: 3c01fff6 */ lui $at,0xfff6 +/* d514: 3421a000 */ ori $at,$at,0xa000 +/* d518: 00411021 */ addu $v0,$v0,$at +/* d51c: 11c0000f */ beqz $t6,.PB0000d55c +/* d520: 2442ffc0 */ addiu $v0,$v0,-64 +/* d524: 3c018000 */ lui $at,0x8000 +/* d528: 00418025 */ or $s0,$v0,$at +/* d52c: 2610003f */ addiu $s0,$s0,0x3f +/* d530: 3c0301ff */ lui $v1,0x1ff +/* d534: 360f003f */ ori $t7,$s0,0x3f +/* d538: 3c0c01ff */ lui $t4,0x1ff +/* d53c: 24655160 */ addiu $a1,$v1,0x5160 +/* d540: 258c5a10 */ addiu $t4,$t4,0x5a10 +/* d544: 39e4003f */ xori $a0,$t7,0x3f +/* d548: 00808025 */ move $s0,$a0 +/* d54c: 0c003468 */ jal 0xd1a0 +/* d550: 01853023 */ subu $a2,$t4,$a1 +/* d554: 1000000e */ b .PB0000d590 +/* d558: 3c01ffff */ lui $at,0xffff +.PB0000d55c: +/* d55c: 3c018000 */ lui $at,0x8000 +/* d560: 00418025 */ or $s0,$v0,$at +/* d564: 2610003f */ addiu $s0,$s0,0x3f +/* d568: 3c0301ff */ lui $v1,0x1ff +/* d56c: 3619003f */ ori $t9,$s0,0x3f +/* d570: 3c1801ff */ lui $t8,0x1ff +/* d574: 24654630 */ addiu $a1,$v1,0x4630 +/* d578: 27185160 */ addiu $t8,$t8,0x5160 +/* d57c: 3b24003f */ xori $a0,$t9,0x3f +/* d580: 00808025 */ move $s0,$a0 +/* d584: 0c003468 */ jal 0xd1a0 +/* d588: 03053023 */ subu $a2,$t8,$a1 +/* d58c: 3c01ffff */ lui $at,0xffff +.PB0000d590: +/* d590: 342141e0 */ ori $at,$at,0x41e0 +/* d594: 02012821 */ addu $a1,$s0,$at +/* d598: afa50048 */ sw $a1,0x48($sp) +/* d59c: 02002025 */ move $a0,$s0 +/* d5a0: 0c001d0c */ jal 0x7430 +/* d5a4: 27a60058 */ addiu $a2,$sp,0x58 +/* d5a8: 3c050004 */ lui $a1,0x4 +/* d5ac: 8faa0048 */ lw $t2,0x48($sp) +/* d5b0: 34a53800 */ ori $a1,$a1,0x3800 +/* d5b4: 00003825 */ move $a3,$zero +/* d5b8: 24040500 */ li $a0,0x500 +/* d5bc: 00077040 */ sll $t6,$a3,0x1 +.PB0000d5c0: +/* d5c0: 020e1821 */ addu $v1,$s0,$t6 +/* d5c4: 00001025 */ move $v0,$zero +.PB0000d5c8: +/* d5c8: 00627821 */ addu $t7,$v1,$v0 +/* d5cc: 24420002 */ addiu $v0,$v0,0x2 +/* d5d0: 1444fffd */ bne $v0,$a0,.PB0000d5c8 +/* d5d4: a5e00000 */ sh $zero,0x0($t7) +/* d5d8: 24e70240 */ addiu $a3,$a3,0x240 +/* d5dc: 00e5082a */ slt $at,$a3,$a1 +/* d5e0: 5420fff7 */ bnezl $at,.PB0000d5c0 +/* d5e4: 00077040 */ sll $t6,$a3,0x1 +/* d5e8: 3c0b8000 */ lui $t3,0x8000 +/* d5ec: 8d6b0300 */ lw $t3,0x300($t3) +/* d5f0: 00003825 */ move $a3,$zero +/* d5f4: 00003025 */ move $a2,$zero +/* d5f8: 15600010 */ bnez $t3,.PB0000d63c +/* d5fc: 24095f10 */ li $t1,0x5f10 +/* d600: 240503f6 */ li $a1,0x3f6 +.PB0000d604: +/* d604: 00076040 */ sll $t4,$a3,0x1 +/* d608: 0006c840 */ sll $t9,$a2,0x1 +/* d60c: 01592021 */ addu $a0,$t2,$t9 +/* d610: 020c1821 */ addu $v1,$s0,$t4 +/* d614: 00001025 */ move $v0,$zero +.PB0000d618: +/* d618: 00826821 */ addu $t5,$a0,$v0 +/* d61c: 95b80000 */ lhu $t8,0x0($t5) +/* d620: 00627021 */ addu $t6,$v1,$v0 +/* d624: 24420002 */ addiu $v0,$v0,0x2 +/* d628: 1445fffb */ bne $v0,$a1,.PB0000d618 +/* d62c: a5d8008a */ sh $t8,0x8a($t6) +/* d630: 24c601fb */ addiu $a2,$a2,0x1fb +/* d634: 14c9fff3 */ bne $a2,$t1,.PB0000d604 +/* d638: 24e70240 */ addiu $a3,$a3,0x240 +.PB0000d63c: +/* d63c: 0c0029f7 */ jal 0xa7dc +/* d640: 24040002 */ li $a0,0x2 +/* d644: 0c002690 */ jal 0x9a40 +/* d648: 02002025 */ move $a0,$s0 +/* d64c: 8faa0048 */ lw $t2,0x48($sp) +/* d650: 3c018006 */ lui $at,0x8006 +/* d654: 3c048009 */ lui $a0,0x8009 +/* d658: ac2a06e4 */ sw $t2,0x6e4($at) +/* d65c: 3c018006 */ lui $at,0x8006 +/* d660: 254f0800 */ addiu $t7,$t2,0x800 +/* d664: ac2f06e0 */ sw $t7,0x6e0($at) +/* d668: 24840010 */ addiu $a0,$a0,0x10 +/* d66c: 27a51478 */ addiu $a1,$sp,0x1478 +/* d670: 0c01232c */ jal 0x48cb0 +/* d674: 00003025 */ move $a2,$zero +/* d678: 14400007 */ bnez $v0,.PB0000d698 +.PB0000d67c: +/* d67c: 3c048009 */ lui $a0,0x8009 +/* d680: 24840010 */ addiu $a0,$a0,0x10 +/* d684: 27a51478 */ addiu $a1,$sp,0x1478 +/* d688: 0c01232c */ jal 0x48cb0 +/* d68c: 00003025 */ move $a2,$zero +/* d690: 1040fffa */ beqz $v0,.PB0000d67c +/* d694: 00000000 */ nop +.PB0000d698: +/* d698: 00001825 */ move $v1,$zero +.PB0000d69c: +/* d69c: 3c048009 */ lui $a0,0x8009 +/* d6a0: 24840010 */ addiu $a0,$a0,0x10 +/* d6a4: 27a51478 */ addiu $a1,$sp,0x1478 +/* d6a8: 24060001 */ li $a2,0x1 +/* d6ac: 0c01232c */ jal 0x48cb0 +/* d6b0: afa31490 */ sw $v1,0x1490($sp) +/* d6b4: 8fab1478 */ lw $t3,0x1478($sp) +/* d6b8: 24010001 */ li $at,0x1 +/* d6bc: 8fa31490 */ lw $v1,0x1490($sp) +/* d6c0: 856c0000 */ lh $t4,0x0($t3) +/* d6c4: 27b01458 */ addiu $s0,$sp,0x1458 +/* d6c8: 5581000d */ bnel $t4,$at,.PB0000d700 +/* d6cc: 28610006 */ slti $at,$v1,0x6 +/* d6d0: 0c0027d3 */ jal 0x9f4c +/* d6d4: afa31490 */ sw $v1,0x1490($sp) +/* d6d8: 3c048006 */ lui $a0,0x8006 +/* d6dc: 3c058006 */ lui $a1,0x8006 +/* d6e0: 24a5e800 */ addiu $a1,$a1,-6144 +/* d6e4: 2484e7d8 */ addiu $a0,$a0,-6184 +/* d6e8: 00003025 */ move $a2,$zero +/* d6ec: 0c00bfad */ jal 0x2feb4 +/* d6f0: 02003825 */ move $a3,$s0 +/* d6f4: 8fa31490 */ lw $v1,0x1490($sp) +/* d6f8: 24630001 */ addiu $v1,$v1,0x1 +/* d6fc: 28610006 */ slti $at,$v1,0x6 +.PB0000d700: +/* d700: 1420ffe6 */ bnez $at,.PB0000d69c +/* d704: 00000000 */ nop +/* d708: 3c198000 */ lui $t9,0x8000 +/* d70c: 8f390300 */ lw $t9,0x300($t9) +/* d710: 13200003 */ beqz $t9,.PB0000d720 +/* d714: 00000000 */ nop +.PB0000d718: +/* d718: 1000ffff */ b .PB0000d718 +/* d71c: 00000000 */ nop +.PB0000d720: +/* d720: 0c001c04 */ jal 0x7010 +/* d724: 00000000 */ nop +/* d728: 0fc6a558 */ jal 0xf1a9560 +/* d72c: 00000000 */ nop +/* d730: 0fc5a179 */ jal 0xf1685e4 +/* d734: 00000000 */ nop +/* d738: 0fc5dea0 */ jal 0xf177a80 +/* d73c: 00000000 */ nop +/* d740: 0fc5deb0 */ jal 0xf177ac0 +/* d744: 00000000 */ nop +/* d748: 3c0d8006 */ lui $t5,0x8006 +/* d74c: 8dade4c0 */ lw $t5,-0x1b40($t5) +/* d750: 11a00003 */ beqz $t5,.PB0000d760 +/* d754: 3c047005 */ lui $a0,0x7005 +/* d758: 0c004c2f */ jal 0x130bc +/* d75c: 24844400 */ addiu $a0,$a0,0x4400 +.PB0000d760: +/* d760: 3c04800b */ lui $a0,0x800b +/* d764: 0c012de0 */ jal 0x4b780 +/* d768: 248417e0 */ addiu $a0,$a0,0x17e0 +/* d76c: 3c038009 */ lui $v1,0x8009 +/* d770: 8c632fe0 */ lw $v1,0x2fe0($v1) +/* d774: 3c018000 */ lui $at,0x8000 +/* d778: 00412025 */ or $a0,$v0,$at +/* d77c: 0c004892 */ jal 0x12248 +/* d780: 00642823 */ subu $a1,$v1,$a0 +/* d784: 0c004977 */ jal 0x125dc +/* d788: 24040008 */ li $a0,0x8 +/* d78c: 0c004977 */ jal 0x125dc +/* d790: 24040006 */ li $a0,0x6 +/* d794: 0c003320 */ jal 0xcc80 +/* d798: 00000000 */ nop +/* d79c: 0fc02c88 */ jal 0xf00b220 +/* d7a0: 00000000 */ nop +/* d7a4: 0fc5e243 */ jal 0xf17890c +/* d7a8: 00000000 */ nop +/* d7ac: 0c000d28 */ jal 0x34a0 +/* d7b0: 00000000 */ nop +/* d7b4: 0fc02c68 */ jal 0xf00b1a0 +/* d7b8: 00000000 */ nop +/* d7bc: 0fc00000 */ jal 0xf000000 +/* d7c0: 00000000 */ nop +/* d7c4: 0fc5a45a */ jal 0xf169168 +/* d7c8: 00000000 */ nop +/* d7cc: 0fc41edb */ jal 0xf107b6c +/* d7d0: 00000000 */ nop +/* d7d4: 0c003a7d */ jal 0xe9f4 +/* d7d8: 00000000 */ nop +/* d7dc: 0fc55154 */ jal 0xf154550 +/* d7e0: 00000000 */ nop +/* d7e4: 0c004e5e */ jal 0x13978 +/* d7e8: 00000000 */ nop +/* d7ec: 0fc4a37c */ jal 0xf128df0 +/* d7f0: 00000000 */ nop +/* d7f4: 0fc5b9d8 */ jal 0xf16e760 +/* d7f8: 00000000 */ nop +/* d7fc: 0fc02c84 */ jal 0xf00b210 +/* d800: 00000000 */ nop +/* d804: 0c00265c */ jal 0x9970 +/* d808: 00000000 */ nop +/* d80c: 0fc0021c */ jal 0xf000870 +/* d810: 00000000 */ nop +/* d814: 0fc00220 */ jal 0xf000880 +/* d818: 00000000 */ nop +/* d81c: 0fc00238 */ jal 0xf0008e0 +/* d820: 00000000 */ nop +/* d824: 0fc0023c */ jal 0xf0008f0 +/* d828: 00000000 */ nop +/* d82c: 0fc00240 */ jal 0xf000900 +/* d830: 00000000 */ nop +/* d834: 0fc02c64 */ jal 0xf00b190 +/* d838: 00000000 */ nop +/* d83c: 0fc00244 */ jal 0xf000910 +/* d840: 00000000 */ nop +/* d844: 0fc00210 */ jal 0xf000840 +/* d848: 00000000 */ nop +/* d84c: 0fc62728 */ jal 0xf189ca0 +/* d850: 00000000 */ nop +/* d854: 0fc52db6 */ jal 0xf14b6d8 +/* d858: 00000000 */ nop +/* d85c: 0fc4649e */ jal 0xf119278 +/* d860: 00000000 */ nop +/* d864: 0fc52ddb */ jal 0xf14b76c +/* d868: 00000000 */ nop +/* d86c: 0c008e60 */ jal 0x23980 +/* d870: 00000000 */ nop +/* d874: 0fc00040 */ jal 0xf000100 +/* d878: 00000000 */ nop +/* d87c: 0fc0004c */ jal 0xf000130 +/* d880: 00000000 */ nop +/* d884: 0fc00214 */ jal 0xf000850 +/* d888: 00000000 */ nop +/* d88c: 0fc00218 */ jal 0xf000860 +/* d890: 00000000 */ nop +/* d894: 0fc00024 */ jal 0xf000090 +/* d898: 00000000 */ nop +/* d89c: 0c0026ba */ jal 0x9ae8 +/* d8a0: 00000000 */ nop +/* d8a4: 0c002773 */ jal 0x9dcc +/* d8a8: 24040001 */ li $a0,0x1 +/* d8ac: 3c188006 */ lui $t8,0x8006 +/* d8b0: 8f18e4e4 */ lw $t8,-0x1b1c($t8) +/* d8b4: 3c018006 */ lui $at,0x8006 +/* d8b8: ac20e828 */ sw $zero,-0x17d8($at) +/* d8bc: 53000004 */ beqzl $t8,.PB0000d8d0 +/* d8c0: 8fbf002c */ lw $ra,0x2c($sp) +/* d8c4: 0c0122b4 */ jal 0x48ad0 +/* d8c8: 00000000 */ nop +/* d8cc: 8fbf002c */ lw $ra,0x2c($sp) +.PB0000d8d0: +/* d8d0: 8fb00028 */ lw $s0,0x28($sp) +/* d8d4: 27bd14e0 */ addiu $sp,$sp,0x14e0 +/* d8d8: 03e00008 */ jr $ra +/* d8dc: 00000000 */ nop +); #elif VERSION >= VERSION_NTSC_1_0 GLOBAL_ASM( glabel mainInit @@ -2596,71 +3021,394 @@ glabel mainLoop ); #endif -#if VERSION >= VERSION_NTSC_1_0 -void mainTick(void) -{ - Gfx *gdl; - Gfx *gdlstart; - OSScMsg msg = {OS_SC_DONE_MSG}; - s32 i; - - if (g_MainChangeToStageNum < 0 && g_MainNumGfxTasks < 2) { - frametimeCalculate(); - profile00009a98(); - profile00009a90(); - profileSetMarker(PROFILE_MAINTICK_START); - func000034d8(); - joyDebugJoy(); - schedSetCrashEnable2(false); - - if (g_MainGameLogicEnabled) { - gdl = gdlstart = gfxGetMasterDisplayList(); - - gDPSetTile(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); - gDPSetTile(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_4b, 0, 0x0100, 6, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); - - lvTick(); - playermgrShuffle(); - - if (g_StageNum < STAGE_TITLE) { - for (i = 0; i < PLAYERCOUNT(); i++) { - setCurrentPlayerNum(playermgrGetPlayerAtOrder(i)); - - if (g_StageNum != STAGE_TEST_OLD || !titleIsKeepingMode()) { - viSetViewPosition(g_Vars.currentplayer->viewleft, g_Vars.currentplayer->viewtop); - viSetFovAspectAndSize( - g_Vars.currentplayer->fovy, g_Vars.currentplayer->aspect, - g_Vars.currentplayer->viewwidth, g_Vars.currentplayer->viewheight); - } - - lvTickPlayer(); - } - } - - gdl = lvRender(gdl); - func000034e0(&gdl); - - if (debug0f11ed70() >= 2) { - gdl = profileRender(gdl); - } - - gDPFullSync(gdl++); - gSPEndDisplayList(gdl++); - } - - if (g_MainGameLogicEnabled) { - gfxSwapBuffers(); - viUpdateMode(); - } - - rdpCreateTask(gdlstart, gdl, 0, &msg); - g_MainNumGfxTasks++; - memaPrint(); - func0f16cf94(); - profileSetMarker(PROFILE_MAINTICK_END); - } -} -#else +#if VERSION == VERSION_PAL_BETA +GLOBAL_ASM( +glabel mainTick +/* e114: 27bdff68 */ addiu $sp,$sp,-152 +/* e118: 3c0f8006 */ lui $t7,0x8006 +/* e11c: afbf001c */ sw $ra,0x1c($sp) +/* e120: afb10018 */ sw $s1,0x18($sp) +/* e124: afb00014 */ sw $s0,0x14($sp) +/* e128: 25efe88c */ addiu $t7,$t7,-6004 +/* e12c: 8de10000 */ lw $at,0x0($t7) +/* e130: 8de80004 */ lw $t0,0x4($t7) +/* e134: 27ae0070 */ addiu $t6,$sp,0x70 +/* e138: adc10000 */ sw $at,0x0($t6) +/* e13c: adc80004 */ sw $t0,0x4($t6) +/* e140: 8de8000c */ lw $t0,0xc($t7) +/* e144: 8de10008 */ lw $at,0x8($t7) +/* e148: 3c098006 */ lui $t1,0x8006 +/* e14c: adc8000c */ sw $t0,0xc($t6) +/* e150: adc10008 */ sw $at,0x8($t6) +/* e154: 8de10010 */ lw $at,0x10($t7) +/* e158: 8de80014 */ lw $t0,0x14($t7) +/* e15c: 3c0a8006 */ lui $t2,0x8006 +/* e160: adc10010 */ sw $at,0x10($t6) +/* e164: adc80014 */ sw $t0,0x14($t6) +/* e168: 8de8001c */ lw $t0,0x1c($t7) +/* e16c: 8de10018 */ lw $at,0x18($t7) +/* e170: adc8001c */ sw $t0,0x1c($t6) +/* e174: adc10018 */ sw $at,0x18($t6) +/* e178: 8d29e864 */ lw $t1,-0x179c($t1) +/* e17c: 0523014a */ bgezl $t1,.PB0000e6a8 +/* e180: 8fbf001c */ lw $ra,0x1c($sp) +/* e184: 8d4ae4dc */ lw $t2,-0x1b24($t2) +/* e188: 2d410002 */ sltiu $at,$t2,0x2 +/* e18c: 50200146 */ beqzl $at,.PB0000e6a8 +/* e190: 8fbf001c */ lw $ra,0x1c($sp) +/* e194: 0fc5b9fd */ jal 0xf16e7f4 +/* e198: 00000000 */ nop +/* e19c: 0c002662 */ jal 0x9988 +/* e1a0: 00000000 */ nop +/* e1a4: 0c002660 */ jal 0x9980 +/* e1a8: 00000000 */ nop +/* e1ac: 0c002664 */ jal 0x9990 +/* e1b0: 3c040002 */ lui $a0,0x2 +/* e1b4: 0c000d2a */ jal 0x34a8 +/* e1b8: 00000000 */ nop +/* e1bc: 0c00534e */ jal 0x14d38 +/* e1c0: 00000000 */ nop +/* e1c4: 0c0006ca */ jal 0x1b28 +/* e1c8: 00002025 */ move $a0,$zero +/* e1cc: 3c048006 */ lui $a0,0x8006 +/* e1d0: 8c84e4d8 */ lw $a0,-0x1b28($a0) +/* e1d4: 1080011c */ beqz $a0,.PB0000e648 +/* e1d8: 00000000 */ nop +/* e1dc: 0fc5a3eb */ jal 0xf168fac +/* e1e0: 00000000 */ nop +/* e1e4: 244b0008 */ addiu $t3,$v0,0x8 +/* e1e8: afa20090 */ sw $v0,0x90($sp) +/* e1ec: afab0094 */ sw $t3,0x94($sp) +/* e1f0: 3c0cf510 */ lui $t4,0xf510 +/* e1f4: 3c0d0700 */ lui $t5,0x700 +/* e1f8: ac4d0004 */ sw $t5,0x4($v0) +/* e1fc: ac4c0000 */ sw $t4,0x0($v0) +/* e200: 8fb90094 */ lw $t9,0x94($sp) +/* e204: 3c0ef500 */ lui $t6,0xf500 +/* e208: 35ce0100 */ ori $t6,$t6,0x100 +/* e20c: 27380008 */ addiu $t8,$t9,0x8 +/* e210: afb80094 */ sw $t8,0x94($sp) +/* e214: 3c0f0600 */ lui $t7,0x600 +/* e218: 3c088006 */ lui $t0,0x8006 +/* e21c: af2f0004 */ sw $t7,0x4($t9) +/* e220: af2e0000 */ sw $t6,0x0($t9) +/* e224: 8d08e868 */ lw $t0,-0x1798($t0) +/* e228: 15000006 */ bnez $t0,.PB0000e244 +/* e22c: 00002025 */ move $a0,$zero +/* e230: 0c00566a */ jal 0x159a8 +/* e234: 2405000c */ li $a1,0xc +/* e238: 2401000c */ li $at,0xc +/* e23c: 1441001a */ bne $v0,$at,.PB0000e2a8 +/* e240: 00002025 */ move $a0,$zero +.PB0000e244: +/* e244: 0c005616 */ jal 0x15858 +/* e248: 00002025 */ move $a0,$zero +/* e24c: 00028e00 */ sll $s1,$v0,0x18 +/* e250: 00114e03 */ sra $t1,$s1,0x18 +/* e254: 01208825 */ move $s1,$t1 +/* e258: 0c005640 */ jal 0x15900 +/* e25c: 00002025 */ move $a0,$zero +/* e260: a3a2003b */ sb $v0,0x3b($sp) +/* e264: 00002025 */ move $a0,$zero +/* e268: 0c00566a */ jal 0x159a8 +/* e26c: 3405ffff */ li $a1,0xffff +/* e270: 3050ffff */ andi $s0,$v0,0xffff +/* e274: 00002025 */ move $a0,$zero +/* e278: 0c00569a */ jal 0x15a68 +/* e27c: 3405ffff */ li $a1,0xffff +/* e280: 00112600 */ sll $a0,$s1,0x18 +/* e284: 00045603 */ sra $t2,$a0,0x18 +/* e288: 01402025 */ move $a0,$t2 +/* e28c: 83a5003b */ lb $a1,0x3b($sp) +/* e290: 3206ffff */ andi $a2,$s0,0xffff +/* e294: 0fc47f67 */ jal 0xf11fd9c +/* e298: 3047ffff */ andi $a3,$v0,0xffff +/* e29c: 3c018006 */ lui $at,0x8006 +/* e2a0: 10000021 */ b .PB0000e328 +/* e2a4: ac22e868 */ sw $v0,-0x1798($at) +.PB0000e2a8: +/* e2a8: 0c00566a */ jal 0x159a8 +/* e2ac: 24051000 */ li $a1,0x1000 +/* e2b0: 14400005 */ bnez $v0,.PB0000e2c8 +/* e2b4: 3c0b8007 */ lui $t3,0x8007 +/* e2b8: 8d6b7b7c */ lw $t3,0x7b7c($t3) +/* e2bc: 3c018007 */ lui $at,0x8007 +/* e2c0: 10000019 */ b .PB0000e328 +/* e2c4: ac2b7b78 */ sw $t3,0x7b78($at) +.PB0000e2c8: +/* e2c8: 0c005616 */ jal 0x15858 +/* e2cc: 00002025 */ move $a0,$zero +/* e2d0: 00028e00 */ sll $s1,$v0,0x18 +/* e2d4: 00116603 */ sra $t4,$s1,0x18 +/* e2d8: 01808825 */ move $s1,$t4 +/* e2dc: 0c005640 */ jal 0x15900 +/* e2e0: 00002025 */ move $a0,$zero +/* e2e4: a3a2003b */ sb $v0,0x3b($sp) +/* e2e8: 00002025 */ move $a0,$zero +/* e2ec: 0c00566a */ jal 0x159a8 +/* e2f0: 3405ffff */ li $a1,0xffff +/* e2f4: 3050ffff */ andi $s0,$v0,0xffff +/* e2f8: 00002025 */ move $a0,$zero +/* e2fc: 0c00569a */ jal 0x15a68 +/* e300: 3405ffff */ li $a1,0xffff +/* e304: 00112600 */ sll $a0,$s1,0x18 +/* e308: 00046e03 */ sra $t5,$a0,0x18 +/* e30c: 01a02025 */ move $a0,$t5 +/* e310: 83a5003b */ lb $a1,0x3b($sp) +/* e314: 3206ffff */ andi $a2,$s0,0xffff +/* e318: 0fc47f67 */ jal 0xf11fd9c +/* e31c: 3047ffff */ andi $a3,$v0,0xffff +/* e320: 3c018006 */ lui $at,0x8006 +/* e324: ac22e868 */ sw $v0,-0x1798($at) +.PB0000e328: +/* e328: 0fc5b487 */ jal 0xf16d21c +/* e32c: 00000000 */ nop +/* e330: 0fc4a8a7 */ jal 0xf12a29c +/* e334: 00000000 */ nop +/* e338: 3c198006 */ lui $t9,0x8006 +/* e33c: 8f39e4c4 */ lw $t9,-0x1b3c($t9) +/* e340: 3c10800a */ lui $s0,0x800a +/* e344: 2610e4d0 */ addiu $s0,$s0,-6960 +/* e348: 2b21005a */ slti $at,$t9,0x5a +/* e34c: 10200055 */ beqz $at,.PB0000e4a4 +/* e350: 00000000 */ nop +/* e354: 8e18006c */ lw $t8,0x6c($s0) +/* e358: 00008825 */ move $s1,$zero +/* e35c: 00002825 */ move $a1,$zero +/* e360: 13000003 */ beqz $t8,.PB0000e370 +/* e364: 00002025 */ move $a0,$zero +/* e368: 10000001 */ b .PB0000e370 +/* e36c: 24050001 */ li $a1,0x1 +.PB0000e370: +/* e370: 8e0e0068 */ lw $t6,0x68($s0) +/* e374: 00001825 */ move $v1,$zero +/* e378: 00001025 */ move $v0,$zero +/* e37c: 11c00003 */ beqz $t6,.PB0000e38c +/* e380: 00000000 */ nop +/* e384: 10000001 */ b .PB0000e38c +/* e388: 24040001 */ li $a0,0x1 +.PB0000e38c: +/* e38c: 8e0f0064 */ lw $t7,0x64($s0) +/* e390: 11e00003 */ beqz $t7,.PB0000e3a0 +/* e394: 00000000 */ nop +/* e398: 10000001 */ b .PB0000e3a0 +/* e39c: 24030001 */ li $v1,0x1 +.PB0000e3a0: +/* e3a0: 8e080070 */ lw $t0,0x70($s0) +/* e3a4: 11000003 */ beqz $t0,.PB0000e3b4 +/* e3a8: 00000000 */ nop +/* e3ac: 10000001 */ b .PB0000e3b4 +/* e3b0: 24020001 */ li $v0,0x1 +.PB0000e3b4: +/* e3b4: 00434821 */ addu $t1,$v0,$v1 +/* e3b8: 01245021 */ addu $t2,$t1,$a0 +/* e3bc: 01455821 */ addu $t3,$t2,$a1 +/* e3c0: 19600038 */ blez $t3,.PB0000e4a4 +/* e3c4: 00000000 */ nop +.PB0000e3c8: +/* e3c8: 0fc4a8ea */ jal 0xf12a3a8 +/* e3cc: 02202025 */ move $a0,$s1 +/* e3d0: 0fc4a783 */ jal 0xf129e0c +/* e3d4: 00402025 */ move $a0,$v0 +/* e3d8: 3c0c8006 */ lui $t4,0x8006 +/* e3dc: 8d8ce4c4 */ lw $t4,-0x1b3c($t4) +/* e3e0: 2401004e */ li $at,0x4e +/* e3e4: 55810006 */ bnel $t4,$at,.PB0000e400 +/* e3e8: 8e020284 */ lw $v0,0x284($s0) +/* e3ec: 0fc06b11 */ jal 0xf01ac44 +/* e3f0: 00000000 */ nop +/* e3f4: 1440000b */ bnez $v0,.PB0000e424 +/* e3f8: 00000000 */ nop +/* e3fc: 8e020284 */ lw $v0,0x284($s0) +.PB0000e400: +/* e400: 84440634 */ lh $a0,0x634($v0) +/* e404: 0c002e75 */ jal 0xb9d4 +/* e408: 84450636 */ lh $a1,0x636($v0) +/* e40c: 8e020284 */ lw $v0,0x284($s0) +/* e410: c44c1854 */ lwc1 $f12,0x1854($v0) +/* e414: c44e1858 */ lwc1 $f14,0x1858($v0) +/* e418: 84460630 */ lh $a2,0x630($v0) +/* e41c: 0c002ec1 */ jal 0xbb04 +/* e420: 84470632 */ lh $a3,0x632($v0) +.PB0000e424: +/* e424: 0fc5b915 */ jal 0xf16e454 +/* e428: 00000000 */ nop +/* e42c: 8e0d006c */ lw $t5,0x6c($s0) +/* e430: 26310001 */ addiu $s1,$s1,0x1 +/* e434: 00002825 */ move $a1,$zero +/* e438: 11a00003 */ beqz $t5,.PB0000e448 +/* e43c: 00002025 */ move $a0,$zero +/* e440: 10000001 */ b .PB0000e448 +/* e444: 24050001 */ li $a1,0x1 +.PB0000e448: +/* e448: 8e190068 */ lw $t9,0x68($s0) +/* e44c: 00001825 */ move $v1,$zero +/* e450: 00001025 */ move $v0,$zero +/* e454: 13200003 */ beqz $t9,.PB0000e464 +/* e458: 00000000 */ nop +/* e45c: 10000001 */ b .PB0000e464 +/* e460: 24040001 */ li $a0,0x1 +.PB0000e464: +/* e464: 8e180064 */ lw $t8,0x64($s0) +/* e468: 13000003 */ beqz $t8,.PB0000e478 +/* e46c: 00000000 */ nop +/* e470: 10000001 */ b .PB0000e478 +/* e474: 24030001 */ li $v1,0x1 +.PB0000e478: +/* e478: 8e0e0070 */ lw $t6,0x70($s0) +/* e47c: 11c00003 */ beqz $t6,.PB0000e48c +/* e480: 00000000 */ nop +/* e484: 10000001 */ b .PB0000e48c +/* e488: 24020001 */ li $v0,0x1 +.PB0000e48c: +/* e48c: 00437821 */ addu $t7,$v0,$v1 +/* e490: 01e44021 */ addu $t0,$t7,$a0 +/* e494: 01054821 */ addu $t1,$t0,$a1 +/* e498: 0229082a */ slt $at,$s1,$t1 +/* e49c: 1420ffca */ bnez $at,.PB0000e3c8 +/* e4a0: 00000000 */ nop +.PB0000e4a4: +/* e4a4: 0fc5ab7d */ jal 0xf16adf4 +/* e4a8: 8fa40094 */ lw $a0,0x94($sp) +/* e4ac: afa20094 */ sw $v0,0x94($sp) +/* e4b0: 0c000d2c */ jal 0x34b0 +/* e4b4: 27a40094 */ addiu $a0,$sp,0x94 +/* e4b8: 0fc4808c */ jal 0xf120230 +/* e4bc: 00000000 */ nop +/* e4c0: 1040003e */ beqz $v0,.PB0000e5bc +/* e4c4: 2407ffff */ li $a3,-1 +/* e4c8: 8faa0094 */ lw $t2,0x94($sp) +/* e4cc: 3c0ce700 */ lui $t4,0xe700 +/* e4d0: 3c18ba00 */ lui $t8,0xba00 +/* e4d4: 254b0008 */ addiu $t3,$t2,0x8 +/* e4d8: afab0094 */ sw $t3,0x94($sp) +/* e4dc: ad400004 */ sw $zero,0x4($t2) +/* e4e0: ad4c0000 */ sw $t4,0x0($t2) +/* e4e4: 8fad0094 */ lw $t5,0x94($sp) +/* e4e8: 37181402 */ ori $t8,$t8,0x1402 +/* e4ec: 3c08f900 */ lui $t0,0xf900 +/* e4f0: 25b90008 */ addiu $t9,$t5,0x8 +/* e4f4: afb90094 */ sw $t9,0x94($sp) +/* e4f8: ada00004 */ sw $zero,0x4($t5) +/* e4fc: adb80000 */ sw $t8,0x0($t5) +/* e500: 8fae0094 */ lw $t6,0x94($sp) +/* e504: 3c0bee00 */ lui $t3,0xee00 +/* e508: 3c19b900 */ lui $t9,0xb900 +/* e50c: 25cf0008 */ addiu $t7,$t6,0x8 +/* e510: afaf0094 */ sw $t7,0x94($sp) +/* e514: adc70004 */ sw $a3,0x4($t6) +/* e518: adc80000 */ sw $t0,0x0($t6) +/* e51c: 8fa90094 */ lw $t1,0x94($sp) +/* e520: 37390201 */ ori $t9,$t9,0x201 +/* e524: 24180004 */ li $t8,0x4 +/* e528: 252a0008 */ addiu $t2,$t1,0x8 +/* e52c: afaa0094 */ sw $t2,0x94($sp) +/* e530: ad270004 */ sw $a3,0x4($t1) +/* e534: ad2b0000 */ sw $t3,0x0($t1) +/* e538: 8fac0094 */ lw $t4,0x94($sp) +/* e53c: 3c090fa5 */ lui $t1,0xfa5 +/* e540: 3c08b900 */ lui $t0,0xb900 +/* e544: 258d0008 */ addiu $t5,$t4,0x8 +/* e548: afad0094 */ sw $t5,0x94($sp) +/* e54c: ad980004 */ sw $t8,0x4($t4) +/* e550: ad990000 */ sw $t9,0x0($t4) +/* e554: 8fae0094 */ lw $t6,0x94($sp) +/* e558: 3508031d */ ori $t0,$t0,0x31d +/* e55c: 35294040 */ ori $t1,$t1,0x4040 +/* e560: 25cf0008 */ addiu $t7,$t6,0x8 +/* e564: afaf0094 */ sw $t7,0x94($sp) +/* e568: adc90004 */ sw $t1,0x4($t6) +/* e56c: adc80000 */ sw $t0,0x0($t6) +/* e570: 8fb00094 */ lw $s0,0x94($sp) +/* e574: 260b0008 */ addiu $t3,$s0,0x8 +/* e578: 0c002e4d */ jal 0xb934 +/* e57c: afab0094 */ sw $t3,0x94($sp) +/* e580: 00028c00 */ sll $s1,$v0,0x10 +/* e584: 00116403 */ sra $t4,$s1,0x10 +/* e588: 0c002e51 */ jal 0xb944 +/* e58c: 01808825 */ move $s1,$t4 +/* e590: 244dffff */ addiu $t5,$v0,-1 +/* e594: 31b903ff */ andi $t9,$t5,0x3ff +/* e598: 262fffff */ addiu $t7,$s1,-1 +/* e59c: 31e803ff */ andi $t0,$t7,0x3ff +/* e5a0: 0019c080 */ sll $t8,$t9,0x2 +/* e5a4: 3c01f600 */ lui $at,0xf600 +/* e5a8: 03017025 */ or $t6,$t8,$at +/* e5ac: 00084b80 */ sll $t1,$t0,0xe +/* e5b0: 01c95025 */ or $t2,$t6,$t1 +/* e5b4: ae0a0000 */ sw $t2,0x0($s0) +/* e5b8: ae000004 */ sw $zero,0x4($s0) +.PB0000e5bc: +/* e5bc: 0c004fd8 */ jal 0x13f60 +/* e5c0: 8fa40094 */ lw $a0,0x94($sp) +/* e5c4: 0c004f11 */ jal 0x13c44 +/* e5c8: afa20094 */ sw $v0,0x94($sp) +/* e5cc: 0fc4806b */ jal 0xf1201ac +/* e5d0: 00000000 */ nop +/* e5d4: 28410002 */ slti $at,$v0,0x2 +/* e5d8: 14200004 */ bnez $at,.PB0000e5ec +/* e5dc: 00000000 */ nop +/* e5e0: 0c002666 */ jal 0x9998 +/* e5e4: 8fa40094 */ lw $a0,0x94($sp) +/* e5e8: afa20094 */ sw $v0,0x94($sp) +.PB0000e5ec: +/* e5ec: 3c0b8006 */ lui $t3,0x8006 +/* e5f0: 8d6be868 */ lw $t3,-0x1798($t3) +/* e5f4: 51600007 */ beqzl $t3,.PB0000e614 +/* e5f8: 8fac0094 */ lw $t4,0x94($sp) +/* e5fc: 0fc47ee8 */ jal 0xf11fba0 +/* e600: 00000000 */ nop +/* e604: 0fc47d89 */ jal 0xf11f624 +/* e608: 8fa40094 */ lw $a0,0x94($sp) +/* e60c: afa20094 */ sw $v0,0x94($sp) +/* e610: 8fac0094 */ lw $t4,0x94($sp) +.PB0000e614: +/* e614: 3c19e900 */ lui $t9,0xe900 +/* e618: 3c08b800 */ lui $t0,0xb800 +/* e61c: 258d0008 */ addiu $t5,$t4,0x8 +/* e620: afad0094 */ sw $t5,0x94($sp) +/* e624: ad800004 */ sw $zero,0x4($t4) +/* e628: ad990000 */ sw $t9,0x0($t4) +/* e62c: 8fb80094 */ lw $t8,0x94($sp) +/* e630: 3c048006 */ lui $a0,0x8006 +/* e634: 270f0008 */ addiu $t7,$t8,0x8 +/* e638: afaf0094 */ sw $t7,0x94($sp) +/* e63c: af000004 */ sw $zero,0x4($t8) +/* e640: af080000 */ sw $t0,0x0($t8) +/* e644: 8c84e4d8 */ lw $a0,-0x1b28($a0) +.PB0000e648: +/* e648: 50800006 */ beqzl $a0,.PB0000e664 +/* e64c: 8fa40090 */ lw $a0,0x90($sp) +/* e650: 0fc5a422 */ jal 0xf169088 +/* e654: 00000000 */ nop +/* e658: 0c0027d3 */ jal 0x9f4c +/* e65c: 00000000 */ nop +/* e660: 8fa40090 */ lw $a0,0x90($sp) +.PB0000e664: +/* e664: 8fa50094 */ lw $a1,0x94($sp) +/* e668: 00003025 */ move $a2,$zero +/* e66c: 0c00bfad */ jal 0x2feb4 +/* e670: 27a70070 */ addiu $a3,$sp,0x70 +/* e674: 3c028006 */ lui $v0,0x8006 +/* e678: 2442e4dc */ addiu $v0,$v0,-6948 +/* e67c: 8c4e0000 */ lw $t6,0x0($v0) +/* e680: 25c90001 */ addiu $t1,$t6,0x1 +/* e684: 0c004ad2 */ jal 0x12b48 +/* e688: ac490000 */ sw $t1,0x0($v0) +/* e68c: 0fc5ba3d */ jal 0xf16e8f4 +/* e690: 00000000 */ nop +/* e694: 0c002664 */ jal 0x9990 +/* e698: 3c040001 */ lui $a0,0x1 +/* e69c: 0fc480d1 */ jal 0xf120344 +/* e6a0: 00000000 */ nop +/* e6a4: 8fbf001c */ lw $ra,0x1c($sp) +.PB0000e6a8: +/* e6a8: 8fb00014 */ lw $s0,0x14($sp) +/* e6ac: 8fb10018 */ lw $s1,0x18($sp) +/* e6b0: 03e00008 */ jr $ra +/* e6b4: 27bd0098 */ addiu $sp,$sp,0x98 +); +#elif VERSION == VERSION_NTSC_BETA GLOBAL_ASM( glabel mainTick /* e8ec: 27bdff68 */ addiu $sp,$sp,-152 @@ -3157,6 +3905,70 @@ u32 var8005f690nb[] = { // profileSetMarker(PROFILE_MAINTICK_END); // } //} +#else +void mainTick(void) +{ + Gfx *gdl; + Gfx *gdlstart; + OSScMsg msg = {OS_SC_DONE_MSG}; + s32 i; + + if (g_MainChangeToStageNum < 0 && g_MainNumGfxTasks < 2) { + frametimeCalculate(); + profile00009a98(); + profile00009a90(); + profileSetMarker(PROFILE_MAINTICK_START); + func000034d8(); + joyDebugJoy(); + schedSetCrashEnable2(false); + + if (g_MainGameLogicEnabled) { + gdl = gdlstart = gfxGetMasterDisplayList(); + + gDPSetTile(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPSetTile(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_4b, 0, 0x0100, 6, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + + lvTick(); + playermgrShuffle(); + + if (g_StageNum < STAGE_TITLE) { + for (i = 0; i < PLAYERCOUNT(); i++) { + setCurrentPlayerNum(playermgrGetPlayerAtOrder(i)); + + if (g_StageNum != STAGE_TEST_OLD || !titleIsKeepingMode()) { + viSetViewPosition(g_Vars.currentplayer->viewleft, g_Vars.currentplayer->viewtop); + viSetFovAspectAndSize( + g_Vars.currentplayer->fovy, g_Vars.currentplayer->aspect, + g_Vars.currentplayer->viewwidth, g_Vars.currentplayer->viewheight); + } + + lvTickPlayer(); + } + } + + gdl = lvRender(gdl); + func000034e0(&gdl); + + if (debug0f11ed70() >= 2) { + gdl = profileRender(gdl); + } + + gDPFullSync(gdl++); + gSPEndDisplayList(gdl++); + } + + if (g_MainGameLogicEnabled) { + gfxSwapBuffers(); + viUpdateMode(); + } + + rdpCreateTask(gdlstart, gdl, 0, &msg); + g_MainNumGfxTasks++; + memaPrint(); + func0f16cf94(); + profileSetMarker(PROFILE_MAINTICK_END); + } +} #endif void mainEndStage(void) diff --git a/src/lib/mema.c b/src/lib/mema.c index 12868f9e5..40634c841 100644 --- a/src/lib/mema.c +++ b/src/lib/mema.c @@ -210,11 +210,50 @@ void memaInit(void) // empty } +#if VERSION == VERSION_PAL_BETA +GLOBAL_ASM( +glabel memaHeapInit +/* 12ac4: 3c03800a */ lui $v1,0x800a +/* 12ac8: 2463c1a8 */ addiu $v1,$v1,-15960 +/* 12acc: 2406ffff */ li $a2,-1 +/* 12ad0: ac6603ec */ sw $a2,0x3ec($v1) +/* 12ad4: ac6603f4 */ sw $a2,0x3f4($v1) +/* 12ad8: 240effff */ li $t6,-1 +/* 12adc: 3c06800a */ lui $a2,0x800a +/* 12ae0: 3c02800a */ lui $v0,0x800a +/* 12ae4: ac600000 */ sw $zero,0x0($v1) +/* 12ae8: ac600004 */ sw $zero,0x4($v1) +/* 12aec: ac600008 */ sw $zero,0x8($v1) +/* 12af0: ac6003f0 */ sw $zero,0x3f0($v1) +/* 12af4: ac6e03f8 */ sw $t6,0x3f8($v1) +/* 12af8: 2442c1b4 */ addiu $v0,$v0,-15948 +/* 12afc: 24c6c58c */ addiu $a2,$a2,-14964 +.PB00012b00: +/* 12b00: 24420008 */ addiu $v0,$v0,0x8 +/* 12b04: 00c2082b */ sltu $at,$a2,$v0 +/* 12b08: ac40fff8 */ sw $zero,-0x8($v0) +/* 12b0c: 1020fffc */ beqz $at,.PB00012b00 +/* 12b10: ac40fffc */ sw $zero,-0x4($v0) +/* 12b14: 3c02800a */ lui $v0,0x800a +/* 12b18: 3c06800a */ lui $a2,0x800a +/* 12b1c: 24c6c1a4 */ addiu $a2,$a2,-15964 +/* 12b20: 2442c1a0 */ addiu $v0,$v0,-15968 +/* 12b24: 3c19000f */ lui $t9,0xf +/* 12b28: ac440000 */ sw $a0,0x0($v0) +/* 12b2c: ac64000c */ sw $a0,0xc($v1) +/* 12b30: acc50000 */ sw $a1,0x0($a2) +/* 12b34: ac650010 */ sw $a1,0x10($v1) +/* 12b38: 37394240 */ ori $t9,$t9,0x4240 +/* 12b3c: 3c018006 */ lui $at,0x8006 +/* 12b40: 03e00008 */ jr $ra +/* 12b44: ac39f910 */ sw $t9,-0x6f0($at) +); +#else void memaHeapInit(void *heapaddr, u32 heapsize) { struct memaspace *space; -#if VERSION >= VERSION_NTSC_1_0 +#if VERSION != VERSION_NTSC_BETA && VERSION != VERSION_PAL_BETA // Adding an amount to the heap size here means that mema can allocate past // the end of its heap. This would overflow into the gun names language // file. Maybe this code was intended to be temporary while a developer @@ -241,7 +280,96 @@ void memaHeapInit(void *heapaddr, u32 heapsize) g_MemaHeap.spaces[0].addr = g_MemaHeapStart = (u32)heapaddr; g_MemaHeap.spaces[0].size = g_MemaHeapSize = heapsize; } +#endif +#if VERSION == VERSION_PAL_BETA +const char var70054900pb[] = "Lev0: %d"; +const char var7005490cpb[] = "Lev1: %d"; +const char var70054918pb[] = "mema: %d (%d)"; + +GLOBAL_ASM( +glabel memaPrint +/* 12b48: 27bdff58 */ addiu $sp,$sp,-168 +/* 12b4c: afbf0014 */ sw $ra,0x14($sp) +/* 12b50: 3c04800a */ lui $a0,0x800a +/* 12b54: 0c0049e8 */ jal 0x127a0 +/* 12b58: 2484c1a8 */ addiu $a0,$a0,-15960 +/* 12b5c: 0fc48118 */ jal 0xf120460 +/* 12b60: 00000000 */ nop +/* 12b64: 10400041 */ beqz $v0,.PB00012c6c +/* 12b68: 240400ff */ li $a0,0xff +/* 12b6c: 240500ff */ li $a1,0xff +/* 12b70: 240600ff */ li $a2,0xff +/* 12b74: 0c004f62 */ jal 0x13d88 +/* 12b78: 240700ff */ li $a3,0xff +/* 12b7c: 00002025 */ move $a0,$zero +/* 12b80: 00002825 */ move $a1,$zero +/* 12b84: 00003025 */ move $a2,$zero +/* 12b88: 0c004f71 */ jal 0x13dc4 +/* 12b8c: 240700ff */ li $a3,0xff +/* 12b90: 24040004 */ li $a0,0x4 +/* 12b94: 0c00494d */ jal 0x12534 +/* 12b98: 00002825 */ move $a1,$zero +/* 12b9c: 3c057005 */ lui $a1,0x7005 +/* 12ba0: 24a54950 */ addiu $a1,$a1,0x4950 +/* 12ba4: 27a4001c */ addiu $a0,$sp,0x1c +/* 12ba8: 0c004e1d */ jal 0x13874 +/* 12bac: 00403025 */ move $a2,$v0 +/* 12bb0: 2404001f */ li $a0,0x1f +/* 12bb4: 0c004f3b */ jal 0x13cec +/* 12bb8: 24050001 */ li $a1,0x1 +/* 12bbc: 0c004fc3 */ jal 0x13f0c +/* 12bc0: 27a4001c */ addiu $a0,$sp,0x1c +/* 12bc4: 240e0002 */ li $t6,0x2 +/* 12bc8: afae009c */ sw $t6,0x9c($sp) +/* 12bcc: 24040004 */ li $a0,0x4 +/* 12bd0: 0c00494d */ jal 0x12534 +/* 12bd4: 24050001 */ li $a1,0x1 +/* 12bd8: 3c057005 */ lui $a1,0x7005 +/* 12bdc: 24a5495c */ addiu $a1,$a1,0x495c +/* 12be0: 27a4001c */ addiu $a0,$sp,0x1c +/* 12be4: 0c004e1d */ jal 0x13874 +/* 12be8: 00403025 */ move $a2,$v0 +/* 12bec: 2404001f */ li $a0,0x1f +/* 12bf0: 0c004f3b */ jal 0x13cec +/* 12bf4: 8fa5009c */ lw $a1,0x9c($sp) +/* 12bf8: 0c004fc3 */ jal 0x13f0c +/* 12bfc: 27a4001c */ addiu $a0,$sp,0x1c +/* 12c00: 8faf009c */ lw $t7,0x9c($sp) +/* 12c04: 25f80001 */ addiu $t8,$t7,0x1 +/* 12c08: 0c004baa */ jal 0x12ea8 +/* 12c0c: afb8009c */ sw $t8,0x9c($sp) +/* 12c10: 3c198006 */ lui $t9,0x8006 +/* 12c14: 8f39f910 */ lw $t9,-0x6f0($t9) +/* 12c18: 0059082b */ sltu $at,$v0,$t9 +/* 12c1c: 10200005 */ beqz $at,.PB00012c34 +/* 12c20: 00000000 */ nop +/* 12c24: 0c004baa */ jal 0x12ea8 +/* 12c28: 00000000 */ nop +/* 12c2c: 3c018006 */ lui $at,0x8006 +/* 12c30: ac22f910 */ sw $v0,-0x6f0($at) +.PB00012c34: +/* 12c34: 0c004baa */ jal 0x12ea8 +/* 12c38: 00000000 */ nop +/* 12c3c: 3c057005 */ lui $a1,0x7005 +/* 12c40: 3c078006 */ lui $a3,0x8006 +/* 12c44: 8ce7f910 */ lw $a3,-0x6f0($a3) +/* 12c48: 24a54968 */ addiu $a1,$a1,0x4968 +/* 12c4c: 27a4001c */ addiu $a0,$sp,0x1c +/* 12c50: 0c004e1d */ jal 0x13874 +/* 12c54: 00403025 */ move $a2,$v0 +/* 12c58: 2404001f */ li $a0,0x1f +/* 12c5c: 0c004f3b */ jal 0x13cec +/* 12c60: 8fa5009c */ lw $a1,0x9c($sp) +/* 12c64: 0c004fc3 */ jal 0x13f0c +/* 12c68: 27a4001c */ addiu $a0,$sp,0x1c +.PB00012c6c: +/* 12c6c: 8fbf0014 */ lw $ra,0x14($sp) +/* 12c70: 27bd00a8 */ addiu $sp,$sp,0xa8 +/* 12c74: 03e00008 */ jr $ra +/* 12c78: 00000000 */ nop +); +#else /** * Example printout of figures: * @@ -355,6 +483,7 @@ void memaPrint(void) } #endif } +#endif #if VERSION >= VERSION_NTSC_1_0 GLOBAL_ASM( diff --git a/src/lib/memp.c b/src/lib/memp.c index 113263f1f..d2c9f26b3 100644 --- a/src/lib/memp.c +++ b/src/lib/memp.c @@ -266,7 +266,7 @@ u32 mempGetPoolFree(u8 poolnum, u32 bank) return pool->rightpos - pool->leftpos; } -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA || VERSION == VERSION_PAL_BETA u32 mempGetPoolSize(u8 poolnum, u32 bank) { struct memorypool *pool; @@ -281,7 +281,7 @@ u32 mempGetPoolSize(u8 poolnum, u32 bank) } #endif -#if VERSION < VERSION_NTSC_1_0 +#if VERSION <= VERSION_NTSC_1_0 void *mempAllocFromPackedWord(u32 word) { return mempAlloc(word >> 4, word & 0x0f); diff --git a/src/lib/model.c b/src/lib/model.c index ced9ffa1e..c27c7d829 100644 --- a/src/lib/model.c +++ b/src/lib/model.c @@ -18,7 +18,7 @@ #include "data.h" #include "types.h" -#if VERSION >= VERSION_PAL_FINAL +#if VERSION >= VERSION_PAL_BETA u8 var8005efb0_2 = 0; #endif @@ -583,7 +583,7 @@ void model0001b0e8(struct model *model, struct modelnode *node) rwdata->chrinfo.unk14 = rwdata->chrinfo.unk30; if (g_Vars.in_cutscene && anim->speed > 0.0f) { -#if VERSION >= VERSION_PAL_FINAL +#if VERSION >= VERSION_PAL_BETA frac = floorf(anim->frac / anim->speed + 0.01f) * anim->speed; #else frac = floorf(anim->frac / anim->speed) * anim->speed; @@ -702,7 +702,7 @@ void model0001b400(struct modelrenderdata *arg0, struct model *model, struct mod anim00024050(sp240, anim->flip, skel, anim->animnum, anim->unk04, &sp230, &sp224, &sp218); if (g_Vars.in_cutscene && anim->speed > 0) { -#if VERSION >= VERSION_PAL_FINAL +#if VERSION >= VERSION_PAL_BETA sp154 = floorf(anim->frac / anim->speed + 0.01f) * anim->speed; #else sp154 = floorf(anim->frac / anim->speed) * anim->speed; @@ -1754,6 +1754,431 @@ glabel var70053fc0pf /* 1c36c: 03e00008 */ jr $ra /* 1c370: 00000000 */ nop ); +#elif VERSION >= VERSION_PAL_BETA +GLOBAL_ASM( +glabel model0001bfa8 +.late_rodata +glabel var70053fc0pf +.word 0x3c23d70a +.text +/* 1ca10: 27bdfea0 */ addiu $sp,$sp,-352 +/* 1ca14: afbf002c */ sw $ra,0x2c($sp) +/* 1ca18: afb00028 */ sw $s0,0x28($sp) +/* 1ca1c: afa40160 */ sw $a0,0x160($sp) +/* 1ca20: afa50164 */ sw $a1,0x164($sp) +/* 1ca24: afa60168 */ sw $a2,0x168($sp) +/* 1ca28: 8ccf0004 */ lw $t7,0x4($a2) +/* 1ca2c: afaf0158 */ sw $t7,0x158($sp) +/* 1ca30: 8cb00020 */ lw $s0,0x20($a1) +/* 1ca34: 5200015a */ beqzl $s0,.PB0001cfa0 +/* 1ca38: 8faf0168 */ lw $t7,0x168($sp) +/* 1ca3c: 95f9000c */ lhu $t9,0xc($t7) +/* 1ca40: 3c098006 */ lui $t1,0x8006 +/* 1ca44: 27b80144 */ addiu $t8,$sp,0x144 +/* 1ca48: afb90154 */ sw $t9,0x154($sp) +/* 1ca4c: 8ca20008 */ lw $v0,0x8($a1) +/* 1ca50: 3c013f80 */ lui $at,0x3f80 +/* 1ca54: 8c480004 */ lw $t0,0x4($v0) +/* 1ca58: afa80150 */ sw $t0,0x150($sp) +/* 1ca5c: 86070000 */ lh $a3,0x0($s0) +/* 1ca60: 27a80138 */ addiu $t0,$sp,0x138 +/* 1ca64: 10e00054 */ beqz $a3,.PB0001cbb8 +/* 1ca68: 00075080 */ sll $t2,$a3,0x2 +/* 1ca6c: 8d2906ac */ lw $t1,0x6ac($t1) +/* 1ca70: 01475023 */ subu $t2,$t2,$a3 +/* 1ca74: 000a5080 */ sll $t2,$t2,0x2 +/* 1ca78: 012a5821 */ addu $t3,$t1,$t2 +/* 1ca7c: 9163000b */ lbu $v1,0xb($t3) +/* 1ca80: 27a9012c */ addiu $t1,$sp,0x12c +/* 1ca84: 306c0002 */ andi $t4,$v1,0x2 +/* 1ca88: 000c182b */ sltu $v1,$zero,$t4 +/* 1ca8c: 50600005 */ beqzl $v1,.PB0001caa4 +/* 1ca90: afa30128 */ sw $v1,0x128($sp) +/* 1ca94: 8c4f0000 */ lw $t7,0x0($v0) +/* 1ca98: 00cf1826 */ xor $v1,$a2,$t7 +/* 1ca9c: 2c630001 */ sltiu $v1,$v1,0x1 +/* 1caa0: afa30128 */ sw $v1,0x128($sp) +.PB0001caa4: +/* 1caa4: 92190004 */ lbu $t9,0x4($s0) +/* 1caa8: 82050008 */ lb $a1,0x8($s0) +/* 1caac: afa3003c */ sw $v1,0x3c($sp) +/* 1cab0: afa9001c */ sw $t1,0x1c($sp) +/* 1cab4: afa80018 */ sw $t0,0x18($sp) +/* 1cab8: afb80014 */ sw $t8,0x14($sp) +/* 1cabc: 8fa40154 */ lw $a0,0x154($sp) +/* 1cac0: 8fa60150 */ lw $a2,0x150($sp) +/* 1cac4: 0c009184 */ jal 0x24610 +/* 1cac8: afb90010 */ sw $t9,0x10($sp) +/* 1cacc: 3c0a800a */ lui $t2,0x800a +/* 1cad0: 8d4ae99c */ lw $t2,-0x1664($t2) +/* 1cad4: 51400013 */ beqzl $t2,.PB0001cb24 +/* 1cad8: 44807000 */ mtc1 $zero,$f14 +/* 1cadc: 44807000 */ mtc1 $zero,$f14 +/* 1cae0: c600001c */ lwc1 $f0,0x1c($s0) +/* 1cae4: 4600703c */ c.lt.s $f14,$f0 +/* 1cae8: 00000000 */ nop +/* 1caec: 4502000d */ bc1fl .PB0001cb24 +/* 1caf0: 44807000 */ mtc1 $zero,$f14 +/* 1caf4: c6040010 */ lwc1 $f4,0x10($s0) +/* 1caf8: 3c017005 */ lui $at,0x7005 +/* 1cafc: c4284cbc */ lwc1 $f8,0x4cbc($at) +/* 1cb00: 46002183 */ div.s $f6,$f4,$f0 +/* 1cb04: 0fc25dc0 */ jal 0xf097700 +/* 1cb08: 46083300 */ add.s $f12,$f6,$f8 +/* 1cb0c: c60a001c */ lwc1 $f10,0x1c($s0) +/* 1cb10: 44807000 */ mtc1 $zero,$f14 +/* 1cb14: 460a0082 */ mul.s $f2,$f0,$f10 +/* 1cb18: 10000004 */ b .PB0001cb2c +/* 1cb1c: 460e1032 */ c.eq.s $f2,$f14 +/* 1cb20: 44807000 */ mtc1 $zero,$f14 +.PB0001cb24: +/* 1cb24: c6020010 */ lwc1 $f2,0x10($s0) +/* 1cb28: 460e1032 */ c.eq.s $f2,$f14 +.PB0001cb2c: +/* 1cb2c: 8fa40154 */ lw $a0,0x154($sp) +/* 1cb30: 8fa60150 */ lw $a2,0x150($sp) +/* 1cb34: 27ac00d4 */ addiu $t4,$sp,0xd4 +/* 1cb38: 4501001c */ bc1t .PB0001cbac +/* 1cb3c: 27ad00c8 */ addiu $t5,$sp,0xc8 +/* 1cb40: 920b0005 */ lbu $t3,0x5($s0) +/* 1cb44: 82050008 */ lb $a1,0x8($s0) +/* 1cb48: 86070000 */ lh $a3,0x0($s0) +/* 1cb4c: 27ae00bc */ addiu $t6,$sp,0xbc +/* 1cb50: afae001c */ sw $t6,0x1c($sp) +/* 1cb54: e7a200e0 */ swc1 $f2,0xe0($sp) +/* 1cb58: afad0018 */ sw $t5,0x18($sp) +/* 1cb5c: afac0014 */ sw $t4,0x14($sp) +/* 1cb60: 0c009184 */ jal 0x24610 +/* 1cb64: afab0010 */ sw $t3,0x10($sp) +/* 1cb68: c7a200e0 */ lwc1 $f2,0xe0($sp) +/* 1cb6c: 27a40144 */ addiu $a0,$sp,0x144 +/* 1cb70: 27a500d4 */ addiu $a1,$sp,0xd4 +/* 1cb74: 44061000 */ mfc1 $a2,$f2 +/* 1cb78: 0c006eb3 */ jal 0x1bacc +/* 1cb7c: 00000000 */ nop +/* 1cb80: 8faf003c */ lw $t7,0x3c($sp) +/* 1cb84: c7a200e0 */ lwc1 $f2,0xe0($sp) +/* 1cb88: 3c198006 */ lui $t9,0x8006 +/* 1cb8c: 15e00004 */ bnez $t7,.PB0001cba0 +/* 1cb90: 27a40138 */ addiu $a0,$sp,0x138 +/* 1cb94: 8f39065c */ lw $t9,0x65c($t9) +/* 1cb98: 53200005 */ beqzl $t9,.PB0001cbb0 +/* 1cb9c: 44807000 */ mtc1 $zero,$f14 +.PB0001cba0: +/* 1cba0: 44061000 */ mfc1 $a2,$f2 +/* 1cba4: 0c006e7a */ jal 0x1b9e8 +/* 1cba8: 27a500c8 */ addiu $a1,$sp,0xc8 +.PB0001cbac: +/* 1cbac: 44807000 */ mtc1 $zero,$f14 +.PB0001cbb0: +/* 1cbb0: 10000010 */ b .PB0001cbf4 +/* 1cbb4: c6120054 */ lwc1 $f18,0x54($s0) +.PB0001cbb8: +/* 1cbb8: 44800000 */ mtc1 $zero,$f0 +/* 1cbbc: 44801000 */ mtc1 $zero,$f2 +/* 1cbc0: 44807000 */ mtc1 $zero,$f14 +/* 1cbc4: e7a00140 */ swc1 $f0,0x140($sp) +/* 1cbc8: e7a0013c */ swc1 $f0,0x13c($sp) +/* 1cbcc: e7a00138 */ swc1 $f0,0x138($sp) +/* 1cbd0: 44810000 */ mtc1 $at,$f0 +/* 1cbd4: afa00128 */ sw $zero,0x128($sp) +/* 1cbd8: e7a20148 */ swc1 $f2,0x148($sp) +/* 1cbdc: e7a20144 */ swc1 $f2,0x144($sp) +/* 1cbe0: e7a2014c */ swc1 $f2,0x14c($sp) +/* 1cbe4: e7a00130 */ swc1 $f0,0x130($sp) +/* 1cbe8: e7a0012c */ swc1 $f0,0x12c($sp) +/* 1cbec: e7a00134 */ swc1 $f0,0x134($sp) +/* 1cbf0: c6120054 */ lwc1 $f18,0x54($s0) +.PB0001cbf4: +/* 1cbf4: 8fa40154 */ lw $a0,0x154($sp) +/* 1cbf8: 8fa60150 */ lw $a2,0x150($sp) +/* 1cbfc: 46127032 */ c.eq.s $f14,$f18 +/* 1cc00: 27a800b0 */ addiu $t0,$sp,0xb0 +/* 1cc04: 27a900a4 */ addiu $t1,$sp,0xa4 +/* 1cc08: 27aa0098 */ addiu $t2,$sp,0x98 +/* 1cc0c: 4501007a */ bc1t .PB0001cdf8 +/* 1cc10: 8fb90128 */ lw $t9,0x128($sp) +/* 1cc14: 92180006 */ lbu $t8,0x6($s0) +/* 1cc18: 82050009 */ lb $a1,0x9($s0) +/* 1cc1c: 86070002 */ lh $a3,0x2($s0) +/* 1cc20: afaa001c */ sw $t2,0x1c($sp) +/* 1cc24: afa90018 */ sw $t1,0x18($sp) +/* 1cc28: afa80014 */ sw $t0,0x14($sp) +/* 1cc2c: 0c009184 */ jal 0x24610 +/* 1cc30: afb80010 */ sw $t8,0x10($sp) +/* 1cc34: 44802000 */ mtc1 $zero,$f4 +/* 1cc38: c6060034 */ lwc1 $f6,0x34($s0) +/* 1cc3c: 8fa40154 */ lw $a0,0x154($sp) +/* 1cc40: 8fa60150 */ lw $a2,0x150($sp) +/* 1cc44: 46062032 */ c.eq.s $f4,$f6 +/* 1cc48: 27ac005c */ addiu $t4,$sp,0x5c +/* 1cc4c: 27ad0050 */ addiu $t5,$sp,0x50 +/* 1cc50: 27ae0044 */ addiu $t6,$sp,0x44 +/* 1cc54: 4503000e */ bc1tl .PB0001cc90 +/* 1cc58: 27a40144 */ addiu $a0,$sp,0x144 +/* 1cc5c: 920b0007 */ lbu $t3,0x7($s0) +/* 1cc60: 82050009 */ lb $a1,0x9($s0) +/* 1cc64: 86070002 */ lh $a3,0x2($s0) +/* 1cc68: afae001c */ sw $t6,0x1c($sp) +/* 1cc6c: afad0018 */ sw $t5,0x18($sp) +/* 1cc70: afac0014 */ sw $t4,0x14($sp) +/* 1cc74: 0c009184 */ jal 0x24610 +/* 1cc78: afab0010 */ sw $t3,0x10($sp) +/* 1cc7c: 27a400b0 */ addiu $a0,$sp,0xb0 +/* 1cc80: 27a5005c */ addiu $a1,$sp,0x5c +/* 1cc84: 0c006eb3 */ jal 0x1bacc +/* 1cc88: 8e060034 */ lw $a2,0x34($s0) +/* 1cc8c: 27a40144 */ addiu $a0,$sp,0x144 +.PB0001cc90: +/* 1cc90: 0fc25ac4 */ jal 0xf096b10 +/* 1cc94: 27a50088 */ addiu $a1,$sp,0x88 +/* 1cc98: 27a400b0 */ addiu $a0,$sp,0xb0 +/* 1cc9c: 0fc25ac4 */ jal 0xf096b10 +/* 1cca0: 27a50078 */ addiu $a1,$sp,0x78 +/* 1cca4: 27a40088 */ addiu $a0,$sp,0x88 +/* 1cca8: 0fc25d4c */ jal 0xf097530 +/* 1ccac: 27a50078 */ addiu $a1,$sp,0x78 +/* 1ccb0: 27a70068 */ addiu $a3,$sp,0x68 +/* 1ccb4: 27a40088 */ addiu $a0,$sp,0x88 +/* 1ccb8: 27a50078 */ addiu $a1,$sp,0x78 +/* 1ccbc: 0fc25c4a */ jal 0xf097128 +/* 1ccc0: 8e060054 */ lw $a2,0x54($s0) +/* 1ccc4: 44804000 */ mtc1 $zero,$f8 +/* 1ccc8: c7aa0138 */ lwc1 $f10,0x138($sp) +/* 1cccc: 27a70068 */ addiu $a3,$sp,0x68 +/* 1ccd0: c7b2013c */ lwc1 $f18,0x13c($sp) +/* 1ccd4: 460a4032 */ c.eq.s $f8,$f10 +/* 1ccd8: c7a80138 */ lwc1 $f8,0x138($sp) +/* 1ccdc: 27b80138 */ addiu $t8,$sp,0x138 +/* 1cce0: 27a8012c */ addiu $t0,$sp,0x12c +/* 1cce4: 4502000e */ bc1fl .PB0001cd20 +/* 1cce8: c60a0088 */ lwc1 $f10,0x88($s0) +/* 1ccec: 44808000 */ mtc1 $zero,$f16 +/* 1ccf0: c7a60140 */ lwc1 $f6,0x140($sp) +/* 1ccf4: 46128032 */ c.eq.s $f16,$f18 +/* 1ccf8: 00000000 */ nop +/* 1ccfc: 45020008 */ bc1fl .PB0001cd20 +/* 1cd00: c60a0088 */ lwc1 $f10,0x88($s0) +/* 1cd04: 44802000 */ mtc1 $zero,$f4 +/* 1cd08: 8fa90164 */ lw $t1,0x164($sp) +/* 1cd0c: 46062032 */ c.eq.s $f4,$f6 +/* 1cd10: 00000000 */ nop +/* 1cd14: 45030023 */ bc1tl .PB0001cda4 +/* 1cd18: 8d2a0008 */ lw $t2,0x8($t1) +/* 1cd1c: c60a0088 */ lwc1 $f10,0x88($s0) +.PB0001cd20: +/* 1cd20: c7b2013c */ lwc1 $f18,0x13c($sp) +/* 1cd24: 8fa50164 */ lw $a1,0x164($sp) +/* 1cd28: 460a4402 */ mul.s $f16,$f8,$f10 +/* 1cd2c: c7a80140 */ lwc1 $f8,0x140($sp) +/* 1cd30: 8fa60168 */ lw $a2,0x168($sp) +/* 1cd34: 8fa20158 */ lw $v0,0x158($sp) +/* 1cd38: e7b00138 */ swc1 $f16,0x138($sp) +/* 1cd3c: c6040088 */ lwc1 $f4,0x88($s0) +/* 1cd40: 46049182 */ mul.s $f6,$f18,$f4 +/* 1cd44: e7a6013c */ swc1 $f6,0x13c($sp) +/* 1cd48: c60a0088 */ lwc1 $f10,0x88($s0) +/* 1cd4c: 460a4482 */ mul.s $f18,$f8,$f10 +/* 1cd50: e7b20140 */ swc1 $f18,0x140($sp) +/* 1cd54: 8caf0008 */ lw $t7,0x8($a1) +/* 1cd58: 8df90000 */ lw $t9,0x0($t7) +/* 1cd5c: 50d9000b */ beql $a2,$t9,.PB0001cd8c +/* 1cd60: 8fa40160 */ lw $a0,0x160($sp) +/* 1cd64: c4440000 */ lwc1 $f4,0x0($v0) +/* 1cd68: 46048200 */ add.s $f8,$f16,$f4 +/* 1cd6c: e7a80138 */ swc1 $f8,0x138($sp) +/* 1cd70: c44a0004 */ lwc1 $f10,0x4($v0) +/* 1cd74: 460a3400 */ add.s $f16,$f6,$f10 +/* 1cd78: e7b0013c */ swc1 $f16,0x13c($sp) +/* 1cd7c: c4440008 */ lwc1 $f4,0x8($v0) +/* 1cd80: 46049200 */ add.s $f8,$f18,$f4 +/* 1cd84: e7a80140 */ swc1 $f8,0x140($sp) +/* 1cd88: 8fa40160 */ lw $a0,0x160($sp) +.PB0001cd8c: +/* 1cd8c: afb80010 */ sw $t8,0x10($sp) +/* 1cd90: 0c00719f */ jal 0x1c67c +/* 1cd94: afa80014 */ sw $t0,0x14($sp) +/* 1cd98: 100000a2 */ b .PB0001d024 +/* 1cd9c: 8fbf002c */ lw $ra,0x2c($sp) +/* 1cda0: 8d2a0008 */ lw $t2,0x8($t1) +.PB0001cda4: +/* 1cda4: 8fa60168 */ lw $a2,0x168($sp) +/* 1cda8: 8fa40160 */ lw $a0,0x160($sp) +/* 1cdac: 8d4b0000 */ lw $t3,0x0($t2) +/* 1cdb0: 8fa50164 */ lw $a1,0x164($sp) +/* 1cdb4: 27ae0138 */ addiu $t6,$sp,0x138 +/* 1cdb8: 10cb000a */ beq $a2,$t3,.PB0001cde4 +/* 1cdbc: 27af012c */ addiu $t7,$sp,0x12c +/* 1cdc0: 8fac0158 */ lw $t4,0x158($sp) +/* 1cdc4: 27ad012c */ addiu $t5,$sp,0x12c +/* 1cdc8: afad0014 */ sw $t5,0x14($sp) +/* 1cdcc: 8fa40160 */ lw $a0,0x160($sp) +/* 1cdd0: 01202825 */ move $a1,$t1 +/* 1cdd4: 0c00719f */ jal 0x1c67c +/* 1cdd8: afac0010 */ sw $t4,0x10($sp) +/* 1cddc: 10000091 */ b .PB0001d024 +/* 1cde0: 8fbf002c */ lw $ra,0x2c($sp) +.PB0001cde4: +/* 1cde4: afae0010 */ sw $t6,0x10($sp) +/* 1cde8: 0c00719f */ jal 0x1c67c +/* 1cdec: afaf0014 */ sw $t7,0x14($sp) +/* 1cdf0: 1000008c */ b .PB0001d024 +/* 1cdf4: 8fbf002c */ lw $ra,0x2c($sp) +.PB0001cdf8: +/* 1cdf8: 13200019 */ beqz $t9,.PB0001ce60 +/* 1cdfc: c7a60138 */ lwc1 $f6,0x138($sp) +/* 1ce00: 0fc577be */ jal 0xf15def8 +/* 1ce04: 00000000 */ nop +/* 1ce08: c7a60138 */ lwc1 $f6,0x138($sp) +/* 1ce0c: c7b0013c */ lwc1 $f16,0x13c($sp) +/* 1ce10: c7a40140 */ lwc1 $f4,0x140($sp) +/* 1ce14: 46003282 */ mul.s $f10,$f6,$f0 +/* 1ce18: 27b80138 */ addiu $t8,$sp,0x138 +/* 1ce1c: 24080001 */ li $t0,0x1 +/* 1ce20: 46008482 */ mul.s $f18,$f16,$f0 +/* 1ce24: 27aa012c */ addiu $t2,$sp,0x12c +/* 1ce28: afaa0018 */ sw $t2,0x18($sp) +/* 1ce2c: 46002202 */ mul.s $f8,$f4,$f0 +/* 1ce30: e7aa0138 */ swc1 $f10,0x138($sp) +/* 1ce34: afa80014 */ sw $t0,0x14($sp) +/* 1ce38: afb80010 */ sw $t8,0x10($sp) +/* 1ce3c: e7b2013c */ swc1 $f18,0x13c($sp) +/* 1ce40: 8fa40160 */ lw $a0,0x160($sp) +/* 1ce44: 8fa50164 */ lw $a1,0x164($sp) +/* 1ce48: e7a80140 */ swc1 $f8,0x140($sp) +/* 1ce4c: 8fa60168 */ lw $a2,0x168($sp) +/* 1ce50: 0c00709d */ jal 0x1c274 +/* 1ce54: 27a70144 */ addiu $a3,$sp,0x144 +/* 1ce58: 10000072 */ b .PB0001d024 +/* 1ce5c: 8fbf002c */ lw $ra,0x2c($sp) +.PB0001ce60: +/* 1ce60: 46067032 */ c.eq.s $f14,$f6 +/* 1ce64: c7aa013c */ lwc1 $f10,0x13c($sp) +/* 1ce68: c7b20138 */ lwc1 $f18,0x138($sp) +/* 1ce6c: 27a70144 */ addiu $a3,$sp,0x144 +/* 1ce70: 45000009 */ bc1f .PB0001ce98 +/* 1ce74: 27af0138 */ addiu $t7,$sp,0x138 +/* 1ce78: 460a7032 */ c.eq.s $f14,$f10 +/* 1ce7c: c7b00140 */ lwc1 $f16,0x140($sp) +/* 1ce80: 45020006 */ bc1fl .PB0001ce9c +/* 1ce84: c6040088 */ lwc1 $f4,0x88($s0) +/* 1ce88: 46107032 */ c.eq.s $f14,$f16 +/* 1ce8c: 8fa80164 */ lw $t0,0x164($sp) +/* 1ce90: 45030027 */ bc1tl .PB0001cf30 +/* 1ce94: 8d0a0008 */ lw $t2,0x8($t0) +.PB0001ce98: +/* 1ce98: c6040088 */ lwc1 $f4,0x88($s0) +.PB0001ce9c: +/* 1ce9c: c7a6013c */ lwc1 $f6,0x13c($sp) +/* 1cea0: 8fa90164 */ lw $t1,0x164($sp) +/* 1cea4: 46049202 */ mul.s $f8,$f18,$f4 +/* 1cea8: c7b20140 */ lwc1 $f18,0x140($sp) +/* 1ceac: 8fab0168 */ lw $t3,0x168($sp) +/* 1ceb0: 8fae0158 */ lw $t6,0x158($sp) +/* 1ceb4: 27b9012c */ addiu $t9,$sp,0x12c +/* 1ceb8: e7a80138 */ swc1 $f8,0x138($sp) +/* 1cebc: c60a0088 */ lwc1 $f10,0x88($s0) +/* 1cec0: 460a3402 */ mul.s $f16,$f6,$f10 +/* 1cec4: e7b0013c */ swc1 $f16,0x13c($sp) +/* 1cec8: c6040088 */ lwc1 $f4,0x88($s0) +/* 1cecc: 46049182 */ mul.s $f6,$f18,$f4 +/* 1ced0: e7a60140 */ swc1 $f6,0x140($sp) +/* 1ced4: 8d2c0008 */ lw $t4,0x8($t1) +/* 1ced8: 8d8d0000 */ lw $t5,0x0($t4) +/* 1cedc: 516d000b */ beql $t3,$t5,.PB0001cf0c +/* 1cee0: 8fa40160 */ lw $a0,0x160($sp) +/* 1cee4: c5ca0000 */ lwc1 $f10,0x0($t6) +/* 1cee8: 460a4480 */ add.s $f18,$f8,$f10 +/* 1ceec: e7b20138 */ swc1 $f18,0x138($sp) +/* 1cef0: c5c40004 */ lwc1 $f4,0x4($t6) +/* 1cef4: 46048200 */ add.s $f8,$f16,$f4 +/* 1cef8: e7a8013c */ swc1 $f8,0x13c($sp) +/* 1cefc: c5ca0008 */ lwc1 $f10,0x8($t6) +/* 1cf00: 460a3480 */ add.s $f18,$f6,$f10 +/* 1cf04: e7b20140 */ swc1 $f18,0x140($sp) +/* 1cf08: 8fa40160 */ lw $a0,0x160($sp) +.PB0001cf0c: +/* 1cf0c: 8fa50164 */ lw $a1,0x164($sp) +/* 1cf10: 8fa60168 */ lw $a2,0x168($sp) +/* 1cf14: afaf0010 */ sw $t7,0x10($sp) +/* 1cf18: afa00014 */ sw $zero,0x14($sp) +/* 1cf1c: 0c00709d */ jal 0x1c274 +/* 1cf20: afb90018 */ sw $t9,0x18($sp) +/* 1cf24: 1000003f */ b .PB0001d024 +/* 1cf28: 8fbf002c */ lw $ra,0x2c($sp) +/* 1cf2c: 8d0a0008 */ lw $t2,0x8($t0) +.PB0001cf30: +/* 1cf30: 8fb80168 */ lw $t8,0x168($sp) +/* 1cf34: 8fa40160 */ lw $a0,0x160($sp) +/* 1cf38: 8d490000 */ lw $t1,0x0($t2) +/* 1cf3c: 8fa50164 */ lw $a1,0x164($sp) +/* 1cf40: 8fa60168 */ lw $a2,0x168($sp) +/* 1cf44: 1309000d */ beq $t8,$t1,.PB0001cf7c +/* 1cf48: 27a70144 */ addiu $a3,$sp,0x144 +/* 1cf4c: 8fac0158 */ lw $t4,0x158($sp) +/* 1cf50: 27ab012c */ addiu $t3,$sp,0x12c +/* 1cf54: afab0018 */ sw $t3,0x18($sp) +/* 1cf58: 8fa40160 */ lw $a0,0x160($sp) +/* 1cf5c: 01002825 */ move $a1,$t0 +/* 1cf60: 03003025 */ move $a2,$t8 +/* 1cf64: 27a70144 */ addiu $a3,$sp,0x144 +/* 1cf68: afa00014 */ sw $zero,0x14($sp) +/* 1cf6c: 0c00709d */ jal 0x1c274 +/* 1cf70: afac0010 */ sw $t4,0x10($sp) +/* 1cf74: 1000002b */ b .PB0001d024 +/* 1cf78: 8fbf002c */ lw $ra,0x2c($sp) +.PB0001cf7c: +/* 1cf7c: 27ad0138 */ addiu $t5,$sp,0x138 +/* 1cf80: 27ae012c */ addiu $t6,$sp,0x12c +/* 1cf84: afae0018 */ sw $t6,0x18($sp) +/* 1cf88: afad0010 */ sw $t5,0x10($sp) +/* 1cf8c: 0c00709d */ jal 0x1c274 +/* 1cf90: afa00014 */ sw $zero,0x14($sp) +/* 1cf94: 10000023 */ b .PB0001d024 +/* 1cf98: 8fbf002c */ lw $ra,0x2c($sp) +/* 1cf9c: 8faf0168 */ lw $t7,0x168($sp) +.PB0001cfa0: +/* 1cfa0: 8fa40164 */ lw $a0,0x164($sp) +/* 1cfa4: 8fb90160 */ lw $t9,0x160($sp) +/* 1cfa8: 8de50008 */ lw $a1,0x8($t7) +/* 1cfac: 50a00006 */ beqzl $a1,.PB0001cfc8 +/* 1cfb0: 8f300000 */ lw $s0,0x0($t9) +/* 1cfb4: 0c006c07 */ jal 0x1b01c +/* 1cfb8: 00003025 */ move $a2,$zero +/* 1cfbc: 10000002 */ b .PB0001cfc8 +/* 1cfc0: 00408025 */ move $s0,$v0 +/* 1cfc4: 8f300000 */ lw $s0,0x0($t9) +.PB0001cfc8: +/* 1cfc8: 1200000f */ beqz $s0,.PB0001d008 +/* 1cfcc: 8fa40158 */ lw $a0,0x158($sp) +/* 1cfd0: 8fa40158 */ lw $a0,0x158($sp) +/* 1cfd4: 0c005c4b */ jal 0x1712c +/* 1cfd8: 27a500e8 */ addiu $a1,$sp,0xe8 +/* 1cfdc: 8fa80158 */ lw $t0,0x158($sp) +/* 1cfe0: 8faa0164 */ lw $t2,0x164($sp) +/* 1cfe4: 02002025 */ move $a0,$s0 +/* 1cfe8: 8518000e */ lh $t8,0xe($t0) +/* 1cfec: 8d49000c */ lw $t1,0xc($t2) +/* 1cff0: 27a500e8 */ addiu $a1,$sp,0xe8 +/* 1cff4: 00186180 */ sll $t4,$t8,0x6 +/* 1cff8: 0c00598d */ jal 0x16634 +/* 1cffc: 012c3021 */ addu $a2,$t1,$t4 +/* 1d000: 10000008 */ b .PB0001d024 +/* 1d004: 8fbf002c */ lw $ra,0x2c($sp) +.PB0001d008: +/* 1d008: 8fad0164 */ lw $t5,0x164($sp) +/* 1d00c: 848f000e */ lh $t7,0xe($a0) +/* 1d010: 8dae000c */ lw $t6,0xc($t5) +/* 1d014: 000fc980 */ sll $t9,$t7,0x6 +/* 1d018: 0c005c4b */ jal 0x1712c +/* 1d01c: 01d92821 */ addu $a1,$t6,$t9 +/* 1d020: 8fbf002c */ lw $ra,0x2c($sp) +.PB0001d024: +/* 1d024: 8fb00028 */ lw $s0,0x28($sp) +/* 1d028: 27bd0160 */ addiu $sp,$sp,0x160 +/* 1d02c: 03e00008 */ jr $ra +/* 1d030: 00000000 */ nop +); #else GLOBAL_ASM( glabel model0001bfa8 @@ -2525,7 +2950,7 @@ void model0001ce64(struct modelrenderdata *arg0, struct model *model) arg0->unk10 += model->filedata->nummatrices; -#if VERSION >= VERSION_PAL_FINAL +#if VERSION >= VERSION_PAL_BETA if (var8005efb0_2 || !model00018680()) { model0001cd18(arg0, model); } @@ -4063,7 +4488,7 @@ void model0001ee18(struct model *model, s32 lvupdate240, bool arg2) } } -#if VERSION < VERSION_PAL_FINAL +#if VERSION < VERSION_PAL_BETA /** * This is identical to the above function but removes the 0.25f multipliers. */ diff --git a/src/lib/sched.c b/src/lib/sched.c index 8dd1ad2a5..ab2de9f8c 100644 --- a/src/lib/sched.c +++ b/src/lib/sched.c @@ -316,7 +316,7 @@ void __scHandleRetrace(OSSched *sc) { sc->frameCount++; -#if VERSION >= VERSION_PAL_FINAL +#if VERSION >= VERSION_PAL_BETA if (!g_Resetting && (sc->frameCount & 1)) { osStopTimer(&g_SchedRspTimer); osSetTimer(&g_SchedRspTimer, 280000, 0, amgrGetFrameMesgQueue(), &g_SchedRspMsg); diff --git a/src/lib/snd.c b/src/lib/snd.c index 20509d081..9deaa44c1 100644 --- a/src/lib/snd.c +++ b/src/lib/snd.c @@ -1668,7 +1668,7 @@ void sndInit(void) { ALSndpConfig sndpconfig; -#if VERSION >= VERSION_PAL_FINAL +#if VERSION >= VERSION_PAL_BETA u32 heaplen = 1024 * 446; #elif VERSION >= VERSION_NTSC_1_0 u32 heaplen = 1024 * 441; @@ -1681,7 +1681,7 @@ void sndInit(void) if (IS4MB()) { g_SndMaxFxBusses = 1; -#if VERSION >= VERSION_PAL_FINAL +#if VERSION >= VERSION_PAL_BETA heaplen -= 1024 * 6; #else heaplen -= 1024 * 38; @@ -1704,7 +1704,7 @@ void sndInit(void) // Allocate memory for the audio heap, // clear it and give it to the audio library ALSynConfig synconfig; -#if VERSION >= VERSION_PAL_FINAL +#if VERSION >= VERSION_PAL_BETA u32 settings[3]; #endif u8 *ptr = mempAlloc(heaplen, MEMPOOL_PERMANENT); @@ -1772,7 +1772,7 @@ void sndInit(void) sndpconfig.unk10 = 9; sndpconfig.heap = &g_SndHeap; -#if VERSION >= VERSION_PAL_FINAL +#if VERSION >= VERSION_PAL_BETA settings[0] = 22020; settings[1] = 1; settings[2] = 2000; diff --git a/src/lib/vi.c b/src/lib/vi.c index 337d50788..4ac78f427 100644 --- a/src/lib/vi.c +++ b/src/lib/vi.c @@ -157,7 +157,7 @@ void viConfigureForLegal(void) g_Vars.fourmeg2player = false; -#if VERSION >= VERSION_PAL_FINAL +#if VERSION >= VERSION_PAL_BETA playerResetLoResIf4Mb(); #endif } @@ -213,8 +213,10 @@ void viAllocateFbs(s32 stagenum) #endif g_Vars.fourmeg2player = true; } else if ((g_Vars.coopplayernum >= 0 || g_Vars.antiplayernum >= 0) && PLAYERCOUNT() == 2) { -#if PAL +#if VERSION >= VERSION_PAL_FINAL fbsize = 320 * 266 * 2; +#elif VERSION >= VERSION_PAL_BETA + fbsize = 320 * 252 * 2; #else fbsize = 320 * 220 * 2; #endif @@ -293,7 +295,7 @@ void vi00009ed4(void) osViSetSpecialFeatures(OS_VI_GAMMA_OFF | OS_VI_DITHER_FILTER_ON); } -#if VERSION >= VERSION_PAL_FINAL +#if VERSION >= VERSION_PAL_BETA GLOBAL_ASM( glabel viUpdateMode /* 9f64: 3c098006 */ lui $t1,0x8006 diff --git a/src/lib/vm.c b/src/lib/vm.c index 488d95ff2..6b8f43c68 100644 --- a/src/lib/vm.c +++ b/src/lib/vm.c @@ -74,7 +74,7 @@ u32 g_VmMarker; u32 g_VmRamEnd; u32 g_VmStateTableEnd; -#if VERSION < VERSION_NTSC_1_0 +#if VERSION == VERSION_NTSC_BETA || VERSION == VERSION_PAL_BETA u8 g_VmShowStats = false; u32 fillnb[2] = {0}; #endif