Working miami build, not repack yet

This commit is contained in:
Stefanos Kornilios Mitsis Poiitidis
2025-03-09 13:02:48 +02:00
parent 2a10df3326
commit 60bbd0b782
11 changed files with 352 additions and 582 deletions

70
.gitignore vendored
View File

@@ -366,27 +366,51 @@ src/extras/GitSHA1.cpp
*.d *.d
*.sim.o *.sim.o
*.sim.o3 *.sim.o3
dreamcast/1ST_READ.BIN
dreamcast/IP.BIN liberty/1ST_READ.BIN
dreamcast/re3.cdi liberty/IP.BIN
dreamcast/re3.iso liberty/re3.cdi
dreamcast/re3.elf liberty/re3.iso
dreamcast/re3.elf.bin liberty/re3.elf
dreamcast/re3-sim.elf liberty/re3.elf.bin
dreamcast/dca3.cdi liberty/re3-sim.elf
dreamcast/dca3.iso liberty/dca3.cdi
dreamcast/dca3.elf liberty/dca3.iso
dreamcast/dca3.elf.bin liberty/dca3.elf
dreamcast/dca3-sim.elf liberty/dca3.elf.bin
dreamcast/texconv* liberty/dca3-sim.elf
dreamcast/imgtool* liberty/texconv*
dreamcast/extract-sfx* liberty/imgtool*
dreamcast/pack-sfx* liberty/extract-sfx*
dreamcast/analyze-profile* liberty/pack-sfx*
dreamcast/aud2adpcm* liberty/analyze-profile*
dreamcast/repack-data liberty/aud2adpcm*
dreamcast/output.map liberty/repack-data
dreamcast/dca3.ds.iso liberty/output.map
dreamcast/git-version.h liberty/dca3.ds.iso
dreamcast/git-version.tmp liberty/git-version
miami/1ST_READ.BIN
miami/IP.BIN
miami/re3.cdi
miami/re3.iso
miami/re3.elf
miami/re3.elf.bin
miami/re3-sim.elf
miami/dca3.cdi
miami/dca3.iso
miami/dca3.elf
miami/dca3.elf.bin
miami/dca3-sim.elf
miami/texconv*
miami/imgtool*
miami/extract-sfx*
miami/pack-sfx*
miami/analyze-profile*
miami/aud2adpcm*
miami/repack-data
miami/output.map
miami/dca3.ds.iso
miami/git-version
.DS_Store .DS_Store

View File

@@ -45,8 +45,8 @@ all: $(TARGET)
include common.mk include common.mk
OBJS = $(RE3_OBJS) $(RW_OBJS) \ OBJS = $(RE3_OBJS) $(RW_OBJS) \
../miami/audio/sampman_dc.o \ ../src/miami/audio/sampman_dc.o \
../src/prof/profiler.o ../src/common/prof/profiler.o
OBJS_TEXCONV = $(RW_OBJS:.o=.texconv.o) OBJS_TEXCONV = $(RW_OBJS:.o=.texconv.o)
OBJS_TEXCONV += \ OBJS_TEXCONV += \
@@ -93,27 +93,27 @@ OBJS_TEXCONV += \
# to conserve RAM. # to conserve RAM.
OBJS_O3 = \ OBJS_O3 = \
../vendor/librw/src/dc/rwdc.o \ ../vendor/librw/src/dc/rwdc.o \
../miami/core/World.o \ ../src/miami/core/World.o \
../miami/collision/Collision.o \ ../src/miami/collision/Collision.o \
../miami/math/math.o \ ../src/miami/math/math.o \
../miami/math/Matrix.o \ ../src/miami/math/Matrix.o \
../miami/math/Quaternion.o \ ../src/miami/math/Quaternion.o \
../miami/math/Rect.o \ ../src/miami/math/Rect.o \
../miami/math/Vector.o \ ../src/miami/math/Vector.o \
../vendor/librw/src/base.o \ ../src/vendor/librw/src/base.o \
../miami/renderer/Shadows.o ../src/miami/renderer/Shadows.o
OBJS_NO_FAST_MATH = \ OBJS_NO_FAST_MATH = \
../miami/core/Cam.o \ ../src/miami/core/Cam.o \
../miami/core/Camera.o \ ../src/miami/core/Camera.o \
../miami/vehicles/Bike.o \ ../src/miami/vehicles/Bike.o \
../miami/renderer/Particle.o ../src/miami/renderer/Particle.o
KOS_CPPFLAGS += -fbuiltin -ffast-math -ffp-contract=fast \ KOS_CPPFLAGS += -fbuiltin -ffast-math -ffp-contract=fast \
-mfsrra -mfsca -mfsrra -mfsca
ifdef KOS_BASE ifdef KOS_BASE
include $(KOS_BASE)/Makefile.rules include $(KOS_BASE)/Makefile.rules../.gitignore
else else
$(warning "KOS_BASE is not set. Only prebuilt targets will work.") $(warning "KOS_BASE is not set. Only prebuilt targets will work.")
endif endif
@@ -130,7 +130,7 @@ CXXFLAGS += $(if $(WITH_32MB),-O3,-Os) \
-Wno-multichar -Wno-unused-value -Wno-char-subscripts -Wno-reorder \ -Wno-multichar -Wno-unused-value -Wno-char-subscripts -Wno-reorder \
-Wno-unused-function -Wno-class-memaccess -fno-permissive \ -Wno-unused-function -Wno-class-memaccess -fno-permissive \
-fno-asynchronous-unwind-tables -fno-enforce-eh-specs -fno-non-call-exceptions \ -fno-asynchronous-unwind-tables -fno-enforce-eh-specs -fno-non-call-exceptions \
-fno-strict-aliasing -fwrapv -fno-strict-aliasing -fwrapv -Wno-unknown-pragmas
clean-texconv: clean-texconv:
-rm -f $(OBJS_TEXCONV) -rm -f $(OBJS_TEXCONV)

View File

@@ -2,298 +2,298 @@ GIT_VERSION := $(shell git describe --always --tags --long --dirty 2>/dev/null |
CI_JOB_ID ?= 00000000 CI_JOB_ID ?= 00000000
git-version.tmp: git-version/git-version.tmp:
@echo "Generating git-version.tmp with GIT_VERSION = \"$(GIT_VERSION)\"" @echo "Generating git-version.tmp with GIT_VERSION = \"$(GIT_VERSION)\""
@echo "#pragma once" > git-version.tmp @echo "#pragma once" > git-version/git-version.tmp
@echo "#ifndef VERSION_H" >> git-version.tmp @echo "#ifndef VERSION_H" >> git-version/git-version.tmp
@echo "#define VERSION_H" >> git-version.tmp @echo "#define VERSION_H" >> git-version/git-version.tmp
@echo "#define GIT_VERSION \"$(GIT_VERSION)\"" >> git-version.tmp @echo "#define GIT_VERSION \"$(GIT_VERSION)\"" >> git-version/git-version.tmp
@echo "#define CI_JOB_ID \"$(CI_JOB_ID)\"" >> git-version.tmp @echo "#define CI_JOB_ID \"$(CI_JOB_ID)\"" >> git-version/git-version.tmp
@echo "#endif // VERSION_H" >> git-version.tmp @echo "#endif // VERSION_H" >> git-version/git-version.tmp
git-version.h: git-version.tmp git-version/git-version.h: git-version/git-version.tmp
@if [ ! -f git-version.h ] || ! cmp -s git-version.tmp git-version.h; then \ @if [ ! -f git-version/git-version.h ] || ! cmp -s git-version/git-version.tmp git-version/git-version.h; then \
echo "Updating git-version.h"; \ echo "Updating git-version.h"; \
cp git-version.tmp git-version.h; \ cp git-version/git-version.tmp git-version/git-version.h; \
else \ else \
echo "git-version.h is up to date. No change."; \ echo "git-version.h is up to date. No change."; \
fi fi
.PHONY: git-version.tmp .PHONY: git-version/git-version.tmp
../miami/skel/dc/dc.cpp: git-version.h ../src/miami/skel/dc/dc.cpp: git-version/git-version.h
# List all of your C files here, but change the extension to ".o" # List all of your C files here, but change the extension to ".o"
# Include "romdisk.o" if you want a rom disk. # Include "romdisk.o" if you want a rom disk.
RE3_OBJS = \ RE3_OBJS = \
../miami/animation/AnimBlendAssocGroup.o \ ../src/miami/animation/AnimBlendAssocGroup.o \
../miami/animation/AnimBlendAssociation.o \ ../src/miami/animation/AnimBlendAssociation.o \
../miami/animation/AnimBlendClumpData.o \ ../src/miami/animation/AnimBlendClumpData.o \
../miami/animation/AnimBlendHierarchy.o \ ../src/miami/animation/AnimBlendHierarchy.o \
../miami/animation/AnimBlendNode.o \ ../src/miami/animation/AnimBlendNode.o \
../miami/animation/AnimBlendSequence.o \ ../src/miami/animation/AnimBlendSequence.o \
../miami/animation/AnimManager.o \ ../src/miami/animation/AnimManager.o \
../miami/animation/Bones.o \ ../src/miami/animation/Bones.o \
../miami/animation/CutsceneMgr.o \ ../src/miami/animation/CutsceneMgr.o \
../miami/animation/FrameUpdate.o \ ../src/miami/animation/FrameUpdate.o \
../miami/animation/RpAnimBlend.o \ ../src/miami/animation/RpAnimBlend.o \
\ \
../miami/buildings/Building.o \ ../src/miami/buildings/Building.o \
../miami/buildings/Treadable.o \ ../src/miami/buildings/Treadable.o \
\ \
../miami/collision/ColBox.o \ ../src/miami/collision/ColBox.o \
../miami/collision/ColLine.o \ ../src/miami/collision/ColLine.o \
../miami/collision/Collision.o \ ../src/miami/collision/Collision.o \
../miami/collision/ColModel.o \ ../src/miami/collision/ColModel.o \
../miami/collision/ColPoint.o \ ../src/miami/collision/ColPoint.o \
../miami/collision/ColSphere.o \ ../src/miami/collision/ColSphere.o \
../miami/collision/ColStore.o \ ../src/miami/collision/ColStore.o \
../miami/collision/ColTriangle.o \ ../src/miami/collision/ColTriangle.o \
../miami/collision/TempColModels.o \ ../src/miami/collision/TempColModels.o \
../miami/collision/VuCollision.o \ ../src/miami/collision/VuCollision.o \
\ \
../miami/control/AutoPilot.o \ ../src/miami/control/AutoPilot.o \
../miami/control/Bridge.o \ ../src/miami/control/Bridge.o \
../miami/control/CarAI.o \ ../src/miami/control/CarAI.o \
../miami/control/CarCtrl.o \ ../src/miami/control/CarCtrl.o \
../miami/control/Curves.o \ ../src/miami/control/Curves.o \
../miami/control/Darkel.o \ ../src/miami/control/Darkel.o \
../miami/control/GameLogic.o \ ../src/miami/control/GameLogic.o \
../miami/control/Garages.o \ ../src/miami/control/Garages.o \
../miami/control/NameGrid.o \ ../src/miami/control/NameGrid.o \
../miami/control/OnscreenTimer.o \ ../src/miami/control/OnscreenTimer.o \
../miami/control/PathFind.o \ ../src/miami/control/PathFind.o \
../miami/control/Phones.o \ ../src/miami/control/Phones.o \
../miami/control/Pickups.o \ ../src/miami/control/Pickups.o \
../miami/control/PowerPoints.o \ ../src/miami/control/PowerPoints.o \
../miami/control/Record.o \ ../src/miami/control/Record.o \
../miami/control/Remote.o \ ../src/miami/control/Remote.o \
../miami/control/Replay.o \ ../src/miami/control/Replay.o \
../miami/control/Restart.o \ ../src/miami/control/Restart.o \
../miami/control/RoadBlocks.o \ ../src/miami/control/RoadBlocks.o \
../miami/control/SceneEdit.o \ ../src/miami/control/SceneEdit.o \
../miami/control/Script.o \ ../src/miami/control/Script.o \
../miami/control/Script2.o \ ../src/miami/control/Script2.o \
../miami/control/Script3.o \ ../src/miami/control/Script3.o \
../miami/control/Script4.o \ ../src/miami/control/Script4.o \
../miami/control/Script5.o \ ../src/miami/control/Script5.o \
../miami/control/Script6.o \ ../src/miami/control/Script6.o \
../miami/control/Script7.o \ ../src/miami/control/Script7.o \
../miami/control/Script8.o \ ../src/miami/control/Script8.o \
../miami/control/SetPieces.o \ ../src/miami/control/SetPieces.o \
../miami/control/ScriptDebug.o \ ../src/miami/control/ScriptDebug.o \
../miami/control/TrafficLights.o \ ../src/miami/control/TrafficLights.o \
\ \
../miami/core/Accident.o \ ../src/miami/core/Accident.o \
../miami/core/Cam.o \ ../src/miami/core/Cam.o \
../miami/core/Camera.o \ ../src/miami/core/Camera.o \
../miami/core/CdStreamDC.o \ ../src/miami/core/CdStreamDC.o \
../miami/core/Clock.o \ ../src/miami/core/Clock.o \
../miami/core/ControllerConfig.o \ ../src/miami/core/ControllerConfig.o \
../miami/core/Debug.o \ ../src/miami/core/Debug.o \
../miami/core/Directory.o \ ../src/miami/core/Directory.o \
../miami/core/EventList.o \ ../src/miami/core/EventList.o \
../miami/core/FileLoader.o \ ../src/miami/core/FileLoader.o \
../miami/core/FileMgr.o \ ../src/miami/core/FileMgr.o \
../miami/core/Fire.o \ ../src/miami/core/Fire.o \
../miami/core/Frontend.o \ ../src/miami/core/Frontend.o \
../miami/core/FrontEndControls.o \ ../src/miami/core/FrontEndControls.o \
../miami/core/Frontend_PS2.o \ ../src/miami/core/Frontend_PS2.o \
../miami/core/Game.o \ ../src/miami/core/Game.o \
../miami/core/IniFile.o \ ../src/miami/core/IniFile.o \
../miami/core/Lists.o \ ../src/miami/core/Lists.o \
../miami/core/main.o \ ../src/miami/core/main.o \
../miami/core/MenuScreens.o \ ../src/miami/core/MenuScreens.o \
../miami/core/MenuScreensCustom.o \ ../src/miami/core/MenuScreensCustom.o \
../miami/core/obrstr.o \ ../src/miami/core/obrstr.o \
../miami/core/Pad.o \ ../src/miami/core/Pad.o \
../miami/core/Placeable.o \ ../src/miami/core/Placeable.o \
../miami/core/PlayerInfo.o \ ../src/miami/core/PlayerInfo.o \
../miami/core/Pools.o \ ../src/miami/core/Pools.o \
../miami/core/Profile.o \ ../src/miami/core/Profile.o \
../miami/core/Radar.o \ ../src/miami/core/Radar.o \
../miami/core/Range2D.o \ ../src/miami/core/Range2D.o \
../miami/core/Range3D.o \ ../src/miami/core/Range3D.o \
../miami/core/re3.o \ ../src/miami/core/re3.o \
../miami/core/References.o \ ../src/miami/core/References.o \
../miami/core/Ropes.o \ ../src/miami/core/Ropes.o \
../miami/core/Stats.o \ ../src/miami/core/Stats.o \
../miami/core/Streaming.o \ ../src/miami/core/Streaming.o \
../miami/core/SurfaceTable.o \ ../src/miami/core/SurfaceTable.o \
../miami/core/timebars.o \ ../src/miami/core/timebars.o \
../miami/core/Timer.o \ ../src/miami/core/Timer.o \
../miami/core/TimeStep.o \ ../src/miami/core/TimeStep.o \
../miami/core/User.o \ ../src/miami/core/User.o \
../miami/core/Wanted.o \ ../src/miami/core/Wanted.o \
../miami/core/World.o \ ../src/miami/core/World.o \
../miami/core/ZoneCull.o \ ../src/miami/core/ZoneCull.o \
../miami/core/Zones.o \ ../src/miami/core/Zones.o \
\ \
../miami/entities/Dummy.o \ ../src/miami/entities/Dummy.o \
../miami/entities/Entity.o \ ../src/miami/entities/Entity.o \
../miami/entities/Physical.o \ ../src/miami/entities/Physical.o \
\ \
../miami/fakerw/fake.o \ ../src/miami/fakerw/fake.o \
\ \
../miami/math/math.o \ ../src/miami/math/math.o \
../miami/math/Matrix.o \ ../src/miami/math/Matrix.o \
../miami/math/Quaternion.o \ ../src/miami/math/Quaternion.o \
../miami/math/Rect.o \ ../src/miami/math/Rect.o \
../miami/math/Vector.o \ ../src/miami/math/Vector.o \
\ \
../miami/modelinfo/BaseModelInfo.o \ ../src/miami/modelinfo/BaseModelInfo.o \
../miami/modelinfo/ClumpModelInfo.o \ ../src/miami/modelinfo/ClumpModelInfo.o \
../miami/modelinfo/MloModelInfo.o \ ../src/miami/modelinfo/MloModelInfo.o \
../miami/modelinfo/ModelIndices.o \ ../src/miami/modelinfo/ModelIndices.o \
../miami/modelinfo/ModelInfo.o \ ../src/miami/modelinfo/ModelInfo.o \
../miami/modelinfo/PedModelInfo.o \ ../src/miami/modelinfo/PedModelInfo.o \
../miami/modelinfo/SimpleModelInfo.o \ ../src/miami/modelinfo/SimpleModelInfo.o \
../miami/modelinfo/TimeModelInfo.o \ ../src/miami/modelinfo/TimeModelInfo.o \
../miami/modelinfo/VehicleModelInfo.o \ ../src/miami/modelinfo/VehicleModelInfo.o \
../miami/modelinfo/WeaponModelInfo.o \ ../src/miami/modelinfo/WeaponModelInfo.o \
\ \
../miami/objects/CutsceneObject.o \ ../src/miami/objects/CutsceneObject.o \
../miami/objects/DummyObject.o \ ../src/miami/objects/DummyObject.o \
../miami/objects/Object.o \ ../src/miami/objects/Object.o \
../miami/objects/ObjectData.o \ ../src/miami/objects/ObjectData.o \
../miami/objects/ParticleObject.o \ ../src/miami/objects/ParticleObject.o \
../miami/objects/Projectile.o \ ../src/miami/objects/Projectile.o \
../miami/objects/Stinger.o \ ../src/miami/objects/Stinger.o \
\ \
../miami/peds/CivilianPed.o \ ../src/miami/peds/CivilianPed.o \
../miami/peds/CopPed.o \ ../src/miami/peds/CopPed.o \
../miami/peds/EmergencyPed.o \ ../src/miami/peds/EmergencyPed.o \
../miami/peds/Gangs.o \ ../src/miami/peds/Gangs.o \
../miami/peds/Ped.o \ ../src/miami/peds/Ped.o \
../miami/peds/PedAI.o \ ../src/miami/peds/PedAI.o \
../miami/peds/PedChat.o \ ../src/miami/peds/PedChat.o \
../miami/peds/PedDebug.o \ ../src/miami/peds/PedDebug.o \
../miami/peds/PedFight.o \ ../src/miami/peds/PedFight.o \
../miami/peds/PedIK.o \ ../src/miami/peds/PedIK.o \
../miami/peds/PedAttractor.o \ ../src/miami/peds/PedAttractor.o \
../miami/peds/PedPlacement.o \ ../src/miami/peds/PedPlacement.o \
../miami/peds/PedRoutes.o \ ../src/miami/peds/PedRoutes.o \
../miami/peds/PedType.o \ ../src/miami/peds/PedType.o \
../miami/peds/PlayerPed.o \ ../src/miami/peds/PlayerPed.o \
../miami/peds/Population.o \ ../src/miami/peds/Population.o \
\ \
../miami/renderer/Antennas.o \ ../src/miami/renderer/Antennas.o \
../miami/renderer/Clouds.o \ ../src/miami/renderer/Clouds.o \
../miami/renderer/Console.o \ ../src/miami/renderer/Console.o \
../miami/renderer/Coronas.o \ ../src/miami/renderer/Coronas.o \
../miami/renderer/Credits.o \ ../src/miami/renderer/Credits.o \
../miami/renderer/CutsceneShadow.o \ ../src/miami/renderer/CutsceneShadow.o \
../miami/renderer/Draw.o \ ../src/miami/renderer/Draw.o \
../miami/renderer/Fluff.o \ ../src/miami/renderer/Fluff.o \
../miami/renderer/Font.o \ ../src/miami/renderer/Font.o \
../miami/renderer/Glass.o \ ../src/miami/renderer/Glass.o \
../miami/renderer/Hud.o \ ../src/miami/renderer/Hud.o \
../miami/renderer/Instance.o \ ../src/miami/renderer/Instance.o \
../miami/renderer/Lines.o \ ../src/miami/renderer/Lines.o \
../miami/renderer/MBlur.o \ ../src/miami/renderer/MBlur.o \
../miami/renderer/Occlusion.o \ ../src/miami/renderer/Occlusion.o \
../miami/renderer/Particle.o \ ../src/miami/renderer/Particle.o \
../miami/renderer/ParticleMgr.o \ ../src/miami/renderer/ParticleMgr.o \
../miami/renderer/PlayerSkin.o \ ../src/miami/renderer/PlayerSkin.o \
../miami/renderer/PointLights.o \ ../src/miami/renderer/PointLights.o \
../miami/renderer/RenderBuffer.o \ ../src/miami/renderer/RenderBuffer.o \
../miami/renderer/Renderer.o \ ../src/miami/renderer/Renderer.o \
../miami/renderer/Rubbish.o \ ../src/miami/renderer/Rubbish.o \
../miami/renderer/Shadows.o \ ../src/miami/renderer/Shadows.o \
../miami/renderer/ShadowCamera.o \ ../src/miami/renderer/ShadowCamera.o \
../miami/renderer/Skidmarks.o \ ../src/miami/renderer/Skidmarks.o \
../miami/renderer/SpecialFX.o \ ../src/miami/renderer/SpecialFX.o \
../miami/renderer/Sprite.o \ ../src/miami/renderer/Sprite.o \
../miami/renderer/Sprite2d.o \ ../src/miami/renderer/Sprite2d.o \
../miami/renderer/TexList.o \ ../src/miami/renderer/TexList.o \
../miami/renderer/Timecycle.o \ ../src/miami/renderer/Timecycle.o \
../miami/renderer/VarConsole.o \ ../src/miami/renderer/VarConsole.o \
../miami/renderer/WaterCannon.o \ ../src/miami/renderer/WaterCannon.o \
../miami/renderer/WaterCreatures.o \ ../src/miami/renderer/WaterCreatures.o \
../miami/renderer/WaterLevel.o \ ../src/miami/renderer/WaterLevel.o \
../miami/renderer/Weather.o \ ../src/miami/renderer/Weather.o \
../miami/renderer/WindModifiers.o \ ../src/miami/renderer/WindModifiers.o \
\ \
../miami/rw/ClumpRead.o \ ../src/miami/rw/ClumpRead.o \
../miami/rw/Lights.o \ ../src/miami/rw/Lights.o \
../miami/rw/MemoryHeap.o \ ../src/miami/rw/MemoryHeap.o \
../miami/rw/MemoryMgr.o \ ../src/miami/rw/MemoryMgr.o \
../miami/rw/NodeName.o \ ../src/miami/rw/NodeName.o \
../miami/rw/RwHelper.o \ ../src/miami/rw/RwHelper.o \
../miami/rw/RwMatFX.o \ ../src/miami/rw/RwMatFX.o \
../miami/rw/RwPS2AlphaTest.o \ ../src/miami/rw/RwPS2AlphaTest.o \
../miami/rw/TexRead.o \ ../src/miami/rw/TexRead.o \
../miami/rw/TexturePools.o \ ../src/miami/rw/TexturePools.o \
../miami/rw/TxdStore.o \ ../src/miami/rw/TxdStore.o \
../miami/rw/VisibilityPlugins.o \ ../src/miami/rw/VisibilityPlugins.o \
\ \
../miami/skel/crossplatform.o \ ../src/miami/skel/crossplatform.o \
../miami/skel/events.o \ ../src/miami/skel/events.o \
../miami/skel/skeleton.o \ ../src/miami/skel/skeleton.o \
../miami/skel/dc/dc.o \ ../src/miami/skel/dc/dc.o \
\ \
../miami/text/Messages.o \ ../src/miami/text/Messages.o \
../miami/text/Pager.o \ ../src/miami/text/Pager.o \
../miami/text/Text.o \ ../src/miami/text/Text.o \
\ \
../miami/vehicles/Automobile.o \ ../src/miami/vehicles/Automobile.o \
../miami/vehicles/Boat.o \ ../src/miami/vehicles/Boat.o \
../miami/vehicles/Bike.o \ ../src/miami/vehicles/Bike.o \
../miami/vehicles/CarGen.o \ ../src/miami/vehicles/CarGen.o \
../miami/vehicles/Cranes.o \ ../src/miami/vehicles/Cranes.o \
../miami/vehicles/DamageManager.o \ ../src/miami/vehicles/DamageManager.o \
../miami/vehicles/Door.o \ ../src/miami/vehicles/Door.o \
../miami/vehicles/Floater.o \ ../src/miami/vehicles/Floater.o \
../miami/vehicles/HandlingMgr.o \ ../src/miami/vehicles/HandlingMgr.o \
../miami/vehicles/Heli.o \ ../src/miami/vehicles/Heli.o \
../miami/vehicles/Plane.o \ ../src/miami/vehicles/Plane.o \
../miami/vehicles/Train.o \ ../src/miami/vehicles/Train.o \
../miami/vehicles/Transmission.o \ ../src/miami/vehicles/Transmission.o \
../miami/vehicles/Vehicle.o \ ../src/miami/vehicles/Vehicle.o \
\ \
../miami/weapons/BulletInfo.o \ ../src/miami/weapons/BulletInfo.o \
../miami/weapons/Explosion.o \ ../src/miami/weapons/Explosion.o \
../miami/weapons/ProjectileInfo.o \ ../src/miami/weapons/ProjectileInfo.o \
../miami/weapons/ShotInfo.o \ ../src/miami/weapons/ShotInfo.o \
../miami/weapons/Weapon.o \ ../src/miami/weapons/Weapon.o \
../miami/weapons/WeaponEffects.o \ ../src/miami/weapons/WeaponEffects.o \
../miami/weapons/WeaponInfo.o \ ../src/miami/weapons/WeaponInfo.o \
\ \
../miami/audio/AudioCollision.o \ ../src/miami/audio/AudioCollision.o \
../miami/audio/AudioLogic.o \ ../src/miami/audio/AudioLogic.o \
../miami/audio/AudioManager.o \ ../src/miami/audio/AudioManager.o \
../miami/audio/AudioScriptObject.o \ ../src/miami/audio/AudioScriptObject.o \
../miami/audio/DMAudio.o \ ../src/miami/audio/DMAudio.o \
../miami/audio/MusicManager.o \ ../src/miami/audio/MusicManager.o \
../miami/audio/PolRadio.o \ ../src/miami/audio/PolRadio.o \
../miami/audio/sampman_miles.o \ ../src/miami/audio/sampman_miles.o \
../miami/audio/sampman_oal.o \ ../src/miami/audio/sampman_oal.o \
\ \
../miami/save/Date.o \ ../src/miami/save/Date.o \
../miami/save/GenericGameStorage.o \ ../src/miami/save/GenericGameStorage.o \
../miami/save/MemoryCard.o \ ../src/miami/save/MemoryCard.o \
../miami/save/PCSave.o \ ../src/miami/save/PCSave.o \
\ \
../miami/extras/debugmenu.o \ ../src/miami/extras/debugmenu.o \
../miami/extras/frontendoption.o \ ../src/miami/extras/frontendoption.o \
../miami/extras/postfx.o \ ../src/miami/extras/postfx.o \
../miami/extras/screendroplets.o \ ../src/miami/extras/screendroplets.o \
\ \
../vendor/miniLZO/minilzo.o \ ../vendor/miniLZO/minilzo.o \
\ \
../miami/vmu/vmu.o ../src/common/vmu/vmu.o
# Excluded \ # Excluded \
../miami/extras/custompipes.o \ ../src/miami/extras/custompipes.o \
../miami/extras/custompipes_d3d9.o \ ../src/miami/extras/custompipes_d3d9.o \
../miami/extras/custompipes_gl.o \ ../src/miami/extras/custompipes_gl.o \
../miami/core/CdStream.o \ ../src/miami/core/CdStream.o \
../miami/core/CdStreamPosix.o \ ../src/miami/core/CdStreamPosix.o \
../miami/extras \ ../src/miami/extras \
../miami/extras/GitSHA1.cpp.in \ ../src/miami/extras/GitSHA1.cpp.in \
../miami/core/AnimViewer.o \ ../src/miami/core/AnimViewer.o \
RW_OBJS = \ RW_OBJS = \
../vendor/librw/src/anim.o \ ../vendor/librw/src/anim.o \
@@ -366,36 +366,39 @@ RW_OBJS = \
../vendor/librw/src/ps2/ps2skin.o \ ../vendor/librw/src/ps2/ps2skin.o \
INCLUDE = \ INCLUDE = \
-I../miami/animation \ -I../src/miami/animation \
-I../miami/audio \ -I../src/miami/audio \
-I../miami/buildings \ -I../src/miami/buildings \
-I../miami/collision \ -I../src/miami/collision \
-I../miami/control \ -I../src/miami/control \
-I../miami/core \ -I../src/miami/core \
-I../miami/entities \ -I../src/miami/entities \
-I../miami/extras \ -I../src/miami/extras \
-I../miami/fakerw \ -I../src/miami/fakerw \
-I../miami/math \ -I../src/miami/math \
-I../miami/modelinfo \ -I../src/miami/modelinfo \
-I../miami/objects \ -I../src/miami/objects \
-I../miami/peds \ -I../src/miami/peds \
-I../miami/renderer \ -I../src/miami/renderer \
-I../miami/rw \ -I../src/miami/rw \
-I../miami/save \ -I../src/miami/save \
-I../miami/skel \ -I../src/miami/skel \
-I../miami/text \ -I../src/miami/text \
-I../miami/vehicles \ -I../src/miami/vehicles \
-I../miami/weapons \ -I../src/miami/weapons \
-I../miami/audio/eax \ -I../src/miami/audio/eax \
-I../miami/audio/oal \ -I../src/miami/audio/oal \
-I../miami/extras/shaders \ -I../src/miami/extras/shaders \
-I../miami/extras/shaders/obj \ -I../src/miami/extras/shaders/obj \
-I../miami/skel/glfw \ -I../src/miami/skel/glfw \
-I../miami/skel/win \ -I../src/miami/skel/win \
\ \
-I../vendor/librw \ -I../vendor/librw \
\ \
-I../vendor/miniLZO -I../vendor/miniLZO \
\
-I../src/common \
-Igit-version
DEFINES = -DRW_DC -DLIBRW $(if $(WITH_LOGGING),-DWITH_LOGGING) $(if $(WITH_DCLOAD),-DDC_CHDIR=/pc) \ DEFINES = -DRW_DC -DLIBRW $(if $(WITH_LOGGING),-DWITH_LOGGING) $(if $(WITH_DCLOAD),-DDC_CHDIR=/pc) \
$(if $(WITH_BEEPS),-DWITH_BEEPS) $(if $(WITH_BEEPS),-DWITH_BEEPS)

View File

@@ -1,6 +1,6 @@
#if defined RW_DC #if defined RW_DC
#include "../vmu/vmu.h" #include "vmu/vmu.h"
#include <dc/maple.h> #include <dc/maple.h>
#include <dc/maple/controller.h> #include <dc/maple/controller.h>
#include <map> #include <map>
@@ -62,7 +62,7 @@ long _dwOperatingSystemVersion;
#include "AnimViewer.h" #include "AnimViewer.h"
#include "Font.h" #include "Font.h"
#include "MemoryMgr.h" #include "MemoryMgr.h"
#include "../../dreamcast/git-version.h" #include "git-version.h"
#include "dc.h" #include "dc.h"
#include <kos/dbglog.h> #include <kos/dbglog.h>

View File

@@ -1,169 +0,0 @@
#include "vmu.h"
#if !defined(DC_TEXCONV)
#ifdef DC_SH4
# include <malloc.h>
#endif
# ifdef DC_SH4
# include <dc/sound/sound.h>
# endif
extern bool _bSampmanInitialised;
// ====== STATIC METHODS =====
VmuProfiler *VmuProfiler::getInstance() {
if(!instance_) {
instance_ = std::unique_ptr<VmuProfiler>(new VmuProfiler);
}
return instance_.get();
}
void VmuProfiler::destroyInstance() {
if(instance_) {
instance_->stopRequest_ = true;
instance_->join();
instance_.reset();
}
}
float VmuProfiler::heapUtilization() {
#ifdef DC_SH4
// Query heap manager/allocator for info
auto mallocInfo = mallinfo();
// Used bytes are as resported
size_t usedBlocks = mallocInfo.uordblks;
// First component of free bytes are as reported
size_t freeBlocks = mallocInfo.fordblks;
// End address of region reserved for heap growth
size_t brkEnd = _arch_mem_top - THD_KERNEL_STACK_SIZE - 1;
// Amount of bytes the heap has yet to still grow
size_t brkFree = brkEnd - reinterpret_cast<uintptr_t>(sbrk(0));
// Total heap space available is free blocks from allocator + unclaimed sbrk() space
freeBlocks += brkFree;
// Return total utilization as a %
return static_cast<float>(usedBlocks) /
static_cast<float>(usedBlocks + freeBlocks) * 100.0f;
#else
return 0.0f;
#endif
}
float VmuProfiler::vertexBufferUtilization() {
#ifdef DC_SH4
size_t start = PVR_GET(PVR_TA_VERTBUF_START);
size_t end = PVR_GET(PVR_TA_VERTBUF_END);
size_t pos = PVR_GET(PVR_TA_VERTBUF_POS);
size_t used = pos - start;
size_t free = end - pos;
return static_cast<float>(used) /
static_cast<float>(used + free) * 100.0f;
#else
return 0.0f;
#endif
}
// ===== INSTANCE METHODS =====
VmuProfiler::VmuProfiler():
std::thread(std::bind_front(&VmuProfiler::run, this))
{}
VmuProfiler::~VmuProfiler() {
stopRequest_ = true;
}
void VmuProfiler::run() {
while(!stopRequest_) {
#ifdef DC_SH4
if(auto *dev = maple_enum_type(0, MAPLE_FUNC_MEMCARD);
dev && _bSampmanInitialised && updated_)
{
pvr_stats_t pvrStats; pvr_get_stats(&pvrStats);
uint32_t sramStats = snd_mem_available();
size_t pvrAvail = pvr_mem_available();
float fps = std::accumulate(std::begin(fps_), std::end(fps_), 0.0f)
/ static_cast<float>(fpsSamples);
float sh4Mem = heapUtilization();
float pvrMem = (8_MB - pvrAvail ) / 8_MB * 100.0f;
float armMem = (2_MB - sramStats) / 2_MB * 100.0f;
float vtxBuf = vertBuffUse_;
{
std::shared_lock lk(mtx_);
vmu_printf("FPS :%6.2f\n"
"SH4 :%6.2f%%\n"
"PVR :%6.2f%%\n"
"ARM :%6.2f%%\n"
"VTX :%6.2f%%",
fps, sh4Mem, pvrMem, armMem, vtxBuf);
}
}
#endif
std::this_thread::sleep_for(updateRate_);
}
}
void VmuProfiler::updateVertexBufferUsage() {
std::unique_lock lk(mtx_);
updated_ = true;
#ifdef DC_SH4
vertBuffUse_ = vertexBufferUtilization();
pvr_stats_t pvrStats;
pvr_get_stats(&pvrStats);
fps_[fpsFrame_++] = pvrStats.frame_rate;
if(fpsFrame_ >= fpsSamples)
fpsFrame_ = 0;
#endif
}
#ifdef DC_SIM
# define vmu_beep_waveform(...) MAPLE_EOK
# define maple_enum_dev(...) nullptr
#endif
RAIIVmuBeeper::RAIIVmuBeeper(maple_device_t *dev, float period, float duty):
device_(dev)
{
assert(period >= duty);
#ifdef WITH_BEEPS
if(!dev) return;
uint8_t period_raw = static_cast<uint8_t>(period * 255);
uint8_t duty_raw = static_cast<uint8_t>(duty * 255);
/* Give other threads a chance to unlock the maple frame,
and keep trying if we fail. */
while(vmu_beep_waveform(dev, period_raw, duty_raw, 0, 0) != MAPLE_EOK)
std::this_thread::yield();
#endif
}
RAIIVmuBeeper::RAIIVmuBeeper(std::string_view address, float period, float duty):
RAIIVmuBeeper(maple_enum_dev(address[0] - 'a', address[1] - '0'), period, duty)
{}
RAIIVmuBeeper::~RAIIVmuBeeper() {
if(!device_) return;
/* Oh dear god, MAKE IT STOP, BETTER EVENTUALLY SUCCEED! */
while(vmu_beep_waveform(device_, 0, 0, 0, 0) != MAPLE_EOK)
std::this_thread::yield();
}
#endif

View File

@@ -1,88 +0,0 @@
#ifndef VMU_H_
#define VMU_H_
#include "common.h"
#include "sampman.h"
#include <thread>
#include <mutex>
#include <shared_mutex>
#include <chrono>
#include <numeric>
#include <array>
#include <functional>
#include <atomic>
#include <memory>
#include <string_view>
#ifdef RW_DC
# include <dc/maple.h>
#endif
#ifndef VMU_DEFALT_PATH
# define VMU_DEFAULT_PATH "a1"
#endif
#if (!defined(RW_DC) || !defined(DC_TEXCONV))
constexpr float operator "" _MB(unsigned long long value) {
return 1024.0f * 1024.0f * value;
}
# define RAIIVmuBeep(...) RAIIVmuBeeper beep(__VA_ARGS__)
class RAIIVmuBeeper {
private:
maple_device_t* device_;
public:
RAIIVmuBeeper(maple_device_t *dev, float period, float duty=0.5f);
RAIIVmuBeeper(std::string_view address, float period, float duty=0.5f);
~RAIIVmuBeeper();
};
class VmuProfiler: public std::thread {
private:
constexpr static auto updateRate_ = std::chrono::milliseconds(100);
constexpr static size_t fpsSamples = 20;
static inline
std::unique_ptr<VmuProfiler> instance_ = {};
mutable std::shared_mutex mtx_ = {};
bool updated_ = false;
std::array<float, fpsSamples> fps_ = { 0.0f };
size_t fpsFrame_ = 0;
float vertBuffUse_ = 0.0f;
std::atomic<bool> stopRequest_ = false;
protected:
// Default constructor, spawns monitor thread
VmuProfiler();
// Main entry point and loop for the monitor thread
virtual void run();
public:
// Returns total % of heap space currently in-use
static float heapUtilization();
// Returns the % of the PVR vertex buffer which is utilized
static float vertexBufferUtilization();
// Returns pointer to singleton, creating it + spawning monitor thread upon first call
static VmuProfiler *getInstance();
static void destroyInstance();
// Automatically signals thread to exit
~VmuProfiler();
// To be called every frame, so we can update FPS stats too!
void updateVertexBufferUsage();
};
#else
# define RAIIVmuBeep(...)
#endif
#endif

View File

@@ -16,7 +16,7 @@ extern const char* currentFile;
#define texconvf(...) // printf(__VA_ARGS__) #define texconvf(...) // printf(__VA_ARGS__)
#endif #endif
#include "../../../src/vmu/vmu.h" #include "vmu/vmu.h"
#include "../rwbase.h" #include "../rwbase.h"
#include "../rwerror.h" #include "../rwerror.h"
#include "../rwplg.h" #include "../rwplg.h"
@@ -28,7 +28,7 @@ extern const char* currentFile;
#include "../rwrender.h" #include "../rwrender.h"
#include "rwdc.h" #include "rwdc.h"
#include "vq.h" #include "vq.h"
#include "tex-util.h" #include "tex-util.h"../src/miami/skel/dc/dc.cpp
#include <vector> #include <vector>
#include <set> #include <set>