Commit graph

426 commits

Author SHA1 Message Date
Tyler Wilding ffb04ddd10
Documentation cleanup and some feature improvements (#1155)
* ci: switch to codacy for coverage

* docs: update badges

* decomp: allow overriding config flags via CLI

* cleanup: top level file cleanup

* docs: big README overhaul

Attempt to close #1128 and #1086

* decomp: attempt to detect if `iso_data` is missing or wrongly extracted

* game: switch to `fpng` for screenshots, allow for compression

closes #1035

* game: switch vsync control to a checkbox

* lint: format cpp files

* lint: format json files

* docs/scripts: organize taskfile
2022-02-12 17:48:50 -05:00
water111 78cde74d5a
update readme and fix always playing str (#1139)
* update readme deps

* replace assert

* bump timeout

* fix memory corruption in kernel

* use unknown if level name is invalid
2022-02-08 19:02:47 -05:00
Hat Kid bde49ea079
Implement Discord Rich Presence (#1137)
* add discord rpc library

* add discord rpc

* add cutscene check

* fix build (hopefully)

* fix build

* edit paths

* Replace prebuilt discord-rpc lib with repo clone
2022-02-07 23:53:36 -05:00
ManDude 5b44aece75
random fixes + support clang-cl on visual studio (#1129)
* delete unused shaders

* hide some options in debug menu

* change fullscreen logic a bit

* add "all actors" toggle

* borderless fix and fix alpha in direct renderer untextured (do we need a separate shader for that?)

* fix fuel cell orbit icons in widescreen

* fix `curve` types

* refs

* fix levitator task...

* fix some task stuff

* update font code a bit (temp)

* cmake, third-party and visual studio overhaul

* Update .gitmodules

* update modules

* clone repos

* fix encoding in zydis

* where did these come from

* try again

* add submodule

* Update 11zip

* Update 11zip

* Update 11zip

* delete

* try again

* clang

* update compiler flags

* delete 11zip. go away.

* Create memory-dump-p2s.py

* properly

* fix minimum architecture c++ compiler flags

* fix zydis

* oops

* Update all-types.gc

* fix clang-cl tests

* make "all actors" work better, entity debug qol

* update game-text conversion code to be more modularized

* Create vendor.txt

* fix typos and minor things

* update refs

* clang

* Attempt to add clang-cl support to vs2019 and CI

* vs2022 + clang-cl

* srsly? fix clang build

* Update launch.vs.json

* extend windows CI timer
2022-02-07 19:15:37 -05:00
water111 f142f46045
add more comments/docstrings on first 58 files, try new windows-specific framelimiting (#1134)
* cleanup

* type

* link against a library
2022-02-05 16:30:50 -05:00
water111 2342b6fb0f
[graphics] MERC (#1124)
* merc dma generation

* wip very early version of merc

* small fixes

* fix

* fix more merc bugs

* derp fixed min

* oops we did need something weird on max

* merc for everything

* program optimization 1

* more optimization

* windows

* windows 2

* clean up

* fix test

* BLERC
2022-02-03 22:45:41 -05:00
ManDude bd1718dc9c
A lot of fixes (game is 100%'able!) (#1118)
* a crapton of fixes

* Update cavecrystal-light.gc

* damn you

* fix bunnies

* change codegen for int -> float cast (just add sign extension now)

* fix test

* this file is tagged anyway

* fix some stack types

* remove bad camera debug funcs

* add more heap bars and entity pick menu

* finish entity menu and make `music-flava` enum

* fix some `process-taskable` fields

* citadel sage crash fix

* fix citadel drop plats

* fix tests

* fix some casts

* update refs

* finish `village3-obs` and `snow-ball`

* Update README.md

* fix sidekick too

* fix issue?

* more entity inspect hardcoded checks

* more

* use `*display-actor-anim*` for something!

* CRAP

* also clear actor anim when deselecting entity

* *display-actor-anim* already renders this!

* do not display `path` tag info

* entity debug inspect tool

* one more

* make debug string even larger

* missing res tag types

* more polish and more known tags

* last few
2022-01-31 20:44:54 -05:00
water111 8f4dd59b7a
[game] clean up texture stuff (#1120)
* better texture loading

* remove old and bad tfrag renderers
2022-01-28 23:44:03 -05:00
water111 57649d243f
[bones] Part 1: Joint (#1110)
* joints

* bones

* align spr to 16k

* fix bug

* lack of sound hack

* clean up
2022-01-28 21:32:03 -05:00
ManDude eb53f410e5
test game actors and fix up/disable broken ones (#1103)
* test village1, beach, jungle actors

* fix jungle actors

* more anims and fixes

* Update launch.vs.json

* fix bad `robotboss` decomp

* fix `robotboss`

* Update robotboss.gc

* fix `mother-spider-proj`

* fix detach (windows)

* update refs

* village2 spools

* type fixes + a few more spols + add append/not-append to goos

* fix beach, misty, village1, village3, lavatube

* fix snow entities

* fix `target-flut`

* update refs

* forgot one

* fail

* sound fixes

* fix test

* complain if `heap-base` is bad

* correct `add-spheres!` decomp errors

* fix citadel

* fix target `change-state` handler

* fix `final-door` state

* fix `target-flut-falling`

* fix deftypes

* oopsie

* move heap memory display behind a toggle and make it fancy

* Update gstate.gc
2022-01-27 19:33:34 -05:00
water111 35bdc9b1d3
add an optional, less-accurate-but-faster sprite render and fix silly math bug (#1102)
* also add a new sprite renderer

* claaaang

* goal build fix

* fix tests, add stack singleton option

* make all event-message-blocks the same

* diskboot
2022-01-21 21:11:57 -05:00
water111 4648f78733
add vis data to tie/tfrag and better framelimiting/lag (#1100)
* add vis data to tie/tfrag and better fps stuff

* better default
2022-01-20 00:22:03 -05:00
water111 a66eef6034
more small fixes (#1094)
* more small fixes

* better bones fix

* type fix
2022-01-19 19:39:36 -05:00
water111 dc663d8a1f
[game] edge grab, small fixes, add zoomer (#1083)
* fix a few small things

* fix tests

* another fix

* fix tests
2022-01-17 14:36:29 -05:00
water111 e84b5a2346
[collision] implement most of background collision, spawn target! (#1076)
* fill collide cache with bounding box working

* yprobe fully working for background at least

* target

* final cleanup, add a bit more foreground mesh stuff that is untested

* warnings, merge issues

* tests

* revert debug changes, format'

* rendering perf
2022-01-15 16:52:47 -05:00
ManDude 67bb1193a8
[runtime] GPU sprite renderer (#1075)
* sprite_3d first attempt

* fixs

* fix Q usage

* ??

* attempt 2

* Update sprite_3d.vert

* works-ish

* works properly!

* scissor fix

* simplify shader

* texture support except everything is broken for some reason

* stuff

* Update SpriteRenderer.cpp

* meltdown

* Revert "simplify shader"

This reverts commit 97bd9b77be.

* Revert "Revert "simplify shader""

This reverts commit 32fb46ce90.

* fix blend

* fix blend and prim

* fix depth write and texture rendering

* fix bugs

* remove noperspective

* fix and finalize sprite 3D vert shader

* optimize 3D program

* 2D sprites! almost first try

* fixes + merge shader code

* HUD sprite support and clean up code

* oopsie

* fix 3d sprites

* minor cleanup and increase sprite buffer to 8k sprites

* clang

* replace some uses of `glBufferSubData` with `glBufferData`
2022-01-15 12:31:38 -05:00
water111 f6f1cadb8e
collide probe works, amazingly (#1072)
* collide probe works, amazingly

* add ref test
2022-01-10 19:28:17 -05:00
water111 38c805ca7c
unused version of collide line sphere collide list (#1071) 2022-01-09 17:45:19 -05:00
ManDude 76a819b98f
[game] revise build order and add remaining levels + add part-tester to menu (#1069)
* Add remaining levels to build system

* add a particles menu

* Update default-menu.gc

* Update part-tester.gc

* make part tester non-destructive

* Make the "ps2 particles" toggle work!

* Update kmachine.h

* fix test

* fix test
2022-01-09 17:43:13 -05:00
water111 a96396e140
[collision] add notes on -h files, add some enums (#1068)
* temp

* add enums
2022-01-08 20:57:57 -05:00
ManDude 701108a1b6
[runtime] Fix progress menu aspect ratios (#1055)
* update progress code and fix our frame "scissoring"

* aspect ratio hacks

* expand progress tint for widescreen

* give up and comment things properly

* properly undo hacks
2022-01-08 13:39:17 -05:00
water111 ab6f41d0c6
[gfx] sprite 3d hack and fix graphics dumps (#1057)
* add sprite 3d

* cleanup
2022-01-07 16:13:19 -05:00
water111 5b3098d617
fix sky and tfrag bugs (#1058) 2022-01-07 14:43:43 -05:00
water111 3c42d222cb
[game] improve loading (#1049)
* better load

* fix sky, cleanup
2022-01-07 11:52:24 -05:00
ManDude 2e18cb605a
[runtime] optimize DirectRenderer for multiple textures + optimize sprite renderer (#1054)
* optimize sprite texture flush + update shaders

* fix bugs

* change logic a bit

* crunch PNGs

* hud size fix

* clang

* remove shaders from list

* use really small alpha cut-off point for sprites

* ad `flat` to vertex shaders too

* increase cut-off very slightly

* take *2 into account

* ok for real this should be good enough
2022-01-06 18:47:20 -05:00
water111 474a8494d8
remove gd files, simplify fakeiso (#1053)
* remove gd files, simplify fakeiso

* fix bug in decompiler mistakenly marking functions as asm
2022-01-04 23:36:39 -05:00
ManDude 62c14631af
[files] merge fake duplicate files (#1048)
* merge `orb-cache-top`

* hopefully fix random TIE extractor crash

* merge `ecovalve-ag`

* expand debug gfx buckets

* merge `barrel-ag`, `sack-ag`, `sharkey-ag`

* merge `warp-gate-switch-ag`

* merge everything else

* Update extract_tie.cpp

* add misty level

* oops

* properly add it this time
2022-01-04 20:32:34 -05:00
water111 b999422305
[tie] add wind effect (#1046)
* wip tie wind stuff

* wind

* clang
2022-01-02 19:02:28 -05:00
ManDude c9204f2a9b
Fix Windows asserts (#1045)
* fix release mode asserts

* clang

* dummy
2022-01-02 18:02:10 -05:00
water111 6e4b34be0b
fix goal build error and a few c++ warnings (#1044) 2022-01-02 16:10:09 -05:00
water111 cd9e74819c
improve performance on intel graphics (#1041)
* improve performance on intel graphics

* more tweaks, add a glfinish button

* remove divide in fragment shader

* temp

* add cpu sky blend

* use vao

* change format

* use floats in direct renderer

* format

* format again

* tfrag ice
2021-12-30 19:38:18 -05:00
ManDude 9ff71412e5
[runtime] pckernel implementation (#1032)
* toggle for ripping level models

* Create pckernel.gc

* builds and works

* fix defs

* resolution info works

* native letterboxing

* menu

* Fullscreen buttons

* Update glfw

* fix fullscreen taking over everything for some reason

* fix screenshots and add more menu options

* Cleanup DMA mess in load boundary render code (first try!!)

* Update default-menu.gc

* clang

* fix accidental macros in pairs

* refs

* fix null reference bugs

* add lavatube

* custom aspect ratios work (3D only)

* custom aspect ratios work (3D only)

* fix aspect ratio and non-4x3 debug text

* change `sceOpen`

* deadzone setting

* merge fixes

* check out `debug-pad-display`

* update readme imgs

* settings save works

* oops

* settings read/load (incomplete)

* add `:stop` to debugger and fix detach on Windows

* settings load works

* fullscreen and aspect ratio setting fixes

* swap menu options for convenience

* settings loads automatically properly

* fix panic and font hack edge case

* add rolling, ogre, snow, swamp, sunken b, jungle b

* Fixed borderless on windows please work

* Update fake_iso.txt

* remove error from opengl debug filter

* update refs

* minor tfrag tod palette lookup change

* accidentally nuked all opengl errors
2021-12-30 18:48:37 -05:00
water111 e8db0583c9
fix flashing lava in firecanyon (#1036) 2021-12-28 22:22:19 -05:00
water111 9b0ae373f0
[decomp] collide-func (#1034)
* add mips2c collide functions

* add ref test for collide-func

* fix test
2021-12-28 16:43:13 -05:00
water111 798356802b
[game] make visibility work (#1031)
* make vis work

* update comments
2021-12-28 15:13:46 -05:00
water111 a8342aef31
[graphics] TIE extractor (#1026)
* temp

* temp

* wip

* more progress on the instance asm

* first half of tie extraction, up to dma lists

* more tie extraction

* first part figured out maybe

* bp1 loop seems to work, bp2 loop does not

* bp1 and bp2 appear working. sadly ip is needed

* ip1 outline, not working ip2

* just kidding, ip2 seems to work

* extraction seems to work

* basic rendering working

* tie fixes

* performance optimization of tie renderer

* hook up tie to engine

* fix more bugs

* cleanup and perf improvements

* fix tests

* ref tests

* mm256i for gcc

* CLANG

* windows

* more compile fixes

* fix fast time of day

* small fixes

* fix after merge

* clang
2021-12-26 12:33:51 -05:00
ManDude 59a12029a0
[decomp] cleanup default-menu, fix dangerous IOP bug, autoconvert ints in pairs to/from bintegers (#997)
* fix a couple macros in ref tests

* `default-menu` cleanup

* add `find-instance-by-name` func

* improve debugger slightly hopefully

* fix IOP PLAY buffer overrun bug

* fix `default-menu` more

* automatically convert ints in static pairs to/from bintegers

* fix test

* clang

* fix a few more lambdas

* update refs

* add custom menu cuz cool

* oopsie! also make `default-level` and `halfpipe` go away

* add camera teleport menu

* update types in debug menu
2021-12-09 18:39:40 -05:00
ManDude e69266bc95
[runtime] fix gamepad race condition, only allow gamepad for pad 0, fix defstatehandler, allow mapping any pad w/ keyboard (#993)
* fix gamepad race condition, only allow gamepad for pad 0, fix `defstatehandler`, allow mapping any pad w/ keyboard

* dont render debug stuff with manylevel hack
2021-12-04 15:34:03 -05:00
water111 28b6584cd4
add ref tests for tfrag (#989) 2021-12-04 13:14:40 -05:00
water111 083202929c
[graphics] tfrag3 renderer (#978)
* begin work

* work

* working objs

* exporting

* it works

* before some time of day fixes

* add time of day interp and also fix zbuffer

* some small blending fixes

* improve randomess

* clean up extraction and missing blend mode

* culling, time of day, more level fixes

* more cleanup

* cleanup memory usage

* windows fix
2021-12-04 12:33:18 -05:00
ManDude 25b0e1be7d
[decomp] collectables + works ingame! (#971)
* decomp: `collectables`

* fix types

* `powerups` and fixes

* fixes

* Merge branch 'pr/929' into d/temp/collectables

* fix collide stuff

* update things...

* update

* update

* temp bump global heap mem

* fix `defstate` hooks wrong/unnecessary sets & collide stuff for collectables

* dumb mistakes :)

* stub out broken process-drawable stuff

* update refs

* add `:no-inspect` key and save some memory & remove birth logs

* Update kmachine.h

* clang

* add citadel

* fix no-inspect key

* fix tests!!

* fix stupid mistake in `collide-shape-prim-sphere` alloc

* comment annoying print

* feedback

* fix edge-case probably

* remove `:no-inspect`s
2021-11-23 18:25:57 -05:00
water111 7292cb5765
tfrag improvements (#970)
* tfrag improvements

* cleanup

* one last fix

* clang
2021-11-15 20:07:10 -05:00
ManDude 80a002f8c0
[decomp] entity birth (#964)
* make birthing work

* fix float representation on defskelgroup

* test

* update

* debugger improvements & dont upload aux sprites

* ?

* fix progress

* fixes

* fixes

* Create bea.gd

* fix test

* fix xmm reg clobbering in kernel (water)

* cleanup cam-start

* clear gamepad state every frame

* allow controller connects and disconnects while running
2021-11-15 19:05:28 -05:00
water111 380e7b3580
clean up a few small things (#968) 2021-11-14 12:45:47 -05:00
Tyler Wilding 44c43610ce
game: Get camera code working (#965)
* cmake: disable edit&continue flags

* goos: make the build system work for alternate file paths nicely

* vs: update vs config

* vscode: extend terminal buffer!

* vs: fix presets

* debugger: fix exception handler

* game: add logo to application

* decomp: get `cam-master` to "work" -- manually changed return type

* debugger: fix printing issue

* game: get the camera actually working

* game: neutralize the analog sticks

* game: support analog sticks

* tests: update ref tests

* temp commit - inprogress stuff

* fix `send-macro`

* turn camera stuff back on, seems to work.  Still kernel-dispatch problem though

* address feedback

* formatting
2021-11-13 22:41:15 -05:00
water111 3afd99a8e3
[graphics] partial tfrag implementation (#958)
* temp

* some decomp

* tfrag dma setup

* fix negative label bug

* tfrag dma setup

* tfrag, with pipeline tricks

* kinda works

* cleanup before trying some color stuff

* time of day works

* clean up

* temp before render changes

* a few more fixes

* fix up tests

* clean up

* fix

* fix alignment

* one more cleanup
2021-11-13 20:44:17 -05:00
ManDude ff50cf2552
improve debugger disasm, :sym-name and fix Windows builds (#959)
* improve debugger disasm, `:sym-name` and fix Windows builds

* >:(

* use this inline constexpr thing??

* fine use strings then

* please.... please work...

* fix windows debugger oopsie

* display rip as goal addr as well

* [debugger] attempt to backtrace even if landed on some garbage memory

* Update CMakePresets.json
2021-11-12 22:00:41 -05:00
water111 6a606d7222
Start a debug tool for looking through level data (#954)
* temp

* temp

* level inspection tool

* docs

* windows fix
2021-10-31 13:12:50 -04:00
water111 d6e82eedb0
[decomp] fix and decomp part tester (#935)
* temp

* update tests
2021-10-23 20:15:31 -04:00
water111 d6f631383e
decomp more level stuff (#932)
* more level stuff

* vi1 to jun load working, with multiple skies

* small fixes

* add level ref test

* clang
2021-10-23 16:00:49 -04:00
water111 44626cfedd
fix issues and decompile racer-states (#924)
* fix issues and decompile racer-states

* type fix
2021-10-21 22:38:39 -04:00
water111 b7fe8447e2
[decomp] improve types around enter-state (#923)
* clean up

* restore hack
2021-10-20 20:55:25 -04:00
water111 18714ba536
[decomp] load boundaries (#922)
* mostly working

* fixes

* very small fixes

* fix tests

* clang
2021-10-20 19:49:32 -04:00
water111 b2052016e2
[decomp] sky/time of day (#883)
* time of day

* goal code seems to work

* stars at wrong spot

* stars and sun work

* debugging clouds

* fix texture correction

* sky works

* cleanup, add profiler

* clean up

* final clean up

* offline tests

* missing include
2021-10-10 20:07:03 -04:00
ManDude 4665b5a246
change type of seconds and clean up opengl includes (#887)
* change type of `seconds`

* fixes to pc pad input (visual only)

* strip down openGL to the version we're actually using for now (4.3 no extensions)

* turn on this opengl message

* really minor inconsequential change
2021-10-06 19:32:58 -04:00
water111 845802ca45
memory cards (in progress) (#868)
* c++ memory card stuff

* saving kinda works

* load working

* more progress

* clean up
2021-10-01 23:12:34 -04:00
water111 f0ceea8b2e
[sparticle] 2d hud particles (#849)
* wip, taking a break to work on asm stuff first

* the goal code for sparticle

* mips2c the first sparticle asm function

* temp

* particle processing no longer crashing

* temp

* working texture cache for vi1 and hud textures

* sprites

* cleanup 1

* temp

* temp

* add zstd library

* temp

* working

* tests

* include fix

* uncomment

* better decomp of sparticle stuff, part 1

* update references
2021-09-26 11:41:58 -04:00
ManDude d8e659df66
[decomp] flying-lurker (#846)
* `flying-lurker`

* why'd this get left behind?

* also `ambient` and add a `banned_objects` config and fix offline tests

* clang

* fix `ambient-type-sound`
2021-09-21 18:40:38 -04:00
water111 f9d8fcd6e4
[decomp] add mips2c converter (#842)
* mips 2 c basic version, not yet tested

* calling works without crashing, but the function doesn't

* it works

* add test

* cleanup and actually add the test

* dont use mips2c by default for font

* clean up formatting
2021-09-11 20:52:35 -04:00
water111 18df68b1f7
fix text rendering bugs (#841) 2021-09-08 22:04:30 -04:00
ManDude 89ccb8cbc7
[decomp] progress (#780)
* cleanup `main`

* whitespace

* start `progress` decomp pt1

* fill in more stuff

* Update label_types.jsonc

* run cheats

* clang

* make most of `progress` decompile

* `progress` pt 2

* [decompiler] support dynamic format strings

* Make `progress-draw` decompile and almost all `progress`

* make clang shut up

* fix unhandled format string

* fix `progress-draw`

* Update DecompilerTypeSystem.cpp

* fix?

* fixes

* fix a few functions

* make `language-enum`

* warn on weird floats

* fix minor pad bug

* dump stuff in `progress`

* make `progress-screen` enum

* progress progress

* update refs and fix stupid bug

* trying to get it to work

* it works!?

* disable sound functions

* fixes

* final touches

* tests

* tests

* add process allocations

* use the right register for windows

* another try for windows, counting is hard

* one more try

* use process allocations

Co-authored-by: water <awaterford111445@gmail.com>
2021-09-06 20:35:03 -04:00
water111 7099a1964e
[runtime] add process allocations (#834)
* add process allocations

* use the right register for windows

* another try for windows, counting is hard

* one more try
2021-09-06 18:27:24 -04:00
water111 c2c6d3ba46
[decompiler] detect res-lump macros (#796)
* support res lump float

* handle data macro

* rest of res macros

* add vi3 to the build system

* missing close paren
2021-08-31 15:01:54 -04:00
water111 34e8afa0ee
get started on entity (#793) 2021-08-31 11:05:03 -04:00
water111 ccdfa01a88
Add the imgui library (#785)
* add the imgui library

* use third-party glfw include

* another try at includes

* again

* another try
2021-08-29 14:54:16 -04:00
doctashay 0a6d28e264
OpenGL Cleanup (#786)
* Begin spdlog integration for decompiler

* Replace old prints with spdlog equivalents

* clang-format

* Add Arch Linux documentation

* Remove spdlog (again)...

* improve label system

* clean up menu

* debug menu working, still need to fix tests

* cleanup-gfx

literally just renaming the window and a few debug prints

* fix readme typo

Co-authored-by: water <awaterford111445@gmail.com>
2021-08-29 14:41:35 -04:00
water111 d9f9e076af
[decompiler] automatically label things when possible (#784)
* improve label system

* clean up menu

* debug menu working, still need to fix tests

* fix tests and clean up
2021-08-29 11:13:06 -04:00
water111 403bb5f4de
[decomp] game-info (#779)
* support more process stuff

* more of game info

* add ref file

* progress on save
2021-08-22 20:12:47 -04:00
water111 97ab6a4e12
add support for non virtual states (#764)
* add support for non virtual states

* typecheck go

* start on virtual states

* more support for virtual states

* offline passes

* fix tests

* use behavior shortcut instead of lambda

* final cleanup of virtual go

* unused var warnings and fix inconsistent enum decompile order on win vs linux

* fix thread safety bug with goal symbol table and vif1 interrupt handler

* fix type mistake
2021-08-17 20:54:03 -04:00
ManDude 67f236d32b Update opengl.cpp 2021-08-17 08:05:18 +01:00
ManDude b18af4efae fix typo in comment while we're at it 2021-08-17 08:05:01 +01:00
ManDude f05117fb0c clang 2021-08-16 16:01:34 +01:00
ManDude 8e348a8cd1 save & load to file! 2021-08-16 15:43:12 +01:00
ManDude 093526721c save key mapping to memory! 2021-08-16 14:57:15 +01:00
ManDude c1fdb23310 fix crash 2021-08-16 07:46:06 +01:00
ManDude efdc598c09 make pc pad remapping process (incomplete) 2021-08-16 07:44:05 +01:00
ManDude ff3174f292 more cpad stuff + make font-flags 2021-08-16 03:50:36 +01:00
ManDude 4a8295898b Merge branch 'master' into d/cpad-test 2021-08-14 23:24:18 +01:00
ManDude ca8f0f7e93 minor fixes 2021-08-14 23:23:45 +01:00
ManDude ded9d63afa fixes 2021-08-14 21:05:38 +01:00
ManDude af823cdb82 implement cpad stuff 2021-08-14 21:00:50 +01:00
water 23748dfeef start on debug graphics 2021-08-13 21:48:56 -04:00
ManDude af5a9f0951 minor gfx updates 2021-08-14 01:06:16 +01:00
water 43a39b197e fix merge 2021-08-12 19:33:47 -04:00
water ebc580822e clean up 2021-08-12 19:03:33 -04:00
water a65357642d fix debugger 2021-08-11 20:21:58 -04:00
water 3bba86ce18 support mt4hh texture for japanese fonts 2021-08-11 19:36:15 -04:00
ManDude ed19d046f3 Update OpenGLRenderer.cpp 2021-08-11 07:44:35 +01:00
ManDude c87b818d82 stuff 2021-08-11 04:48:56 +01:00
water b85ee3a3a5 fix possible bug in direct renderer 2021-08-10 22:13:34 -04:00
water 2b7a8d8880 another fix 2021-08-10 21:46:12 -04:00
water df94e948bb more fixes 2021-08-10 21:31:15 -04:00
water fb006492c5 build fix 2021-08-09 22:05:07 -04:00
water 9495e91259 online tests pass 2021-08-09 21:54:40 -04:00
water f700438d01 fix merge issues 2021-08-09 21:42:05 -04:00
water 40ecd92272 Merge branch 'master' of https://github.com/water111/jak-project into w/dma-for-font 2021-08-09 21:41:25 -04:00
ManDude a850b5d5cb
revamp the gfx+display systems a bit (#739)
* revamp gfx and display systems a bit

* Use some fancy c++ pointers instead of just raw pointers

* Tidy some things up.

* clang

* clang 2

* fixes

* fixesss

* error detection when making display
2021-08-09 19:16:39 -04:00
water ee6639b4f7 fix texture filter 2021-08-09 18:59:47 -04:00
water b4846f0491 hook up profiler 2021-08-08 21:50:34 -04:00
water 0dfe6a169d fonts and stuff work 2021-08-08 20:46:14 -04:00
water 124003f5f2 store texture in pool 2021-08-08 15:46:34 -04:00
water f25b0f0de2 some clean up 2021-08-08 13:20:54 -04:00
water 54301a36be texture decoding 2021-08-08 13:12:44 -04:00
water 66f95d3c8a text working with no textures 2021-08-07 21:16:44 -04:00
water ef6204e353 closer 2021-08-07 18:57:13 -04:00
water d1674ea9b6 wip 2021-08-06 22:30:02 -04:00
water 821c2ab42a display loop runs 2021-08-04 21:30:08 -04:00
water111 ef011f4fe8
[goalc] add a build system (#704)
* add first attempt at build system

* fix stupid bug

* try again
2021-07-15 21:37:15 -04:00
water111 656489e942
[decomp] Clean up - part 2 (#687)
* temp

* temp2

* basic case support

* working for or without else

* support more cases

* clean up to drawable headers

* ocean

* format json
2021-07-11 16:35:25 -04:00
water111 1898c7c52a
[decomp] texture (#684)
* temp

* more cleanup

* fix merge issue

* handle no texture correctly
2021-07-09 22:20:37 -04:00
water111 a81aef889a
Level load test (#656)
* tweaks for loading VI1

* temp

* clean up
2021-06-30 19:20:31 -04:00
ManDude 1af0f4a1a7
[decomp] most of level and some game loop functions + couple decomp… (#651)
* [decomp] most of `level` and some game loop functions + couple decompiler fixes

* add ART.CGO to fake-iso
2021-06-29 20:30:52 -04:00
ManDude 997d5b57db
[memdump] Make it work on fields of type (array basic) (#620)
* use `std::function` for this because that's what you're meant to do

* [memdump] Analyze fields of type `(array basic)`

* fix test

* Massively simplify things.
2021-06-23 22:07:17 -04:00
water111 8faded6400
[decompiler] bitfield support for sound-name (#582)
* fix 64-bit fields in 128-bit bitfields

* support sound-name

* fix merge

* support some more sound stuff in overlord
2021-06-12 12:55:38 -04:00
water111 a572587a0e
add types (#559) 2021-06-05 16:58:32 -04:00
Ziemas 62877ed4f3
Overlord: Music tweak struct. (#509) 2021-05-20 18:10:27 -04:00
water111 ec412c7777
[decomp] ramdisk, load-dgo and rpc-h (#496)
* decompile ramdisk load-dgo and rpc-h

* add a bunch of offline tests

* clang-format
2021-05-16 21:07:22 -04:00
water111 53a7d6512f
lock when modifying components (#475) 2021-05-12 22:44:58 -04:00
ManDude fef9b139d7
Force-enable assert on release mode Windows build (#440) 2021-05-10 23:03:56 -04:00
ManDude 370ac4f64a
Change VM dying logic to prevent deadlocks (#433) 2021-05-10 00:00:50 -04:00
water111 62dfa1bf07
[TypeSystem] add heap-base property to types (#431)
* support heap base in the type system

* lock around modification of status
2021-05-09 19:40:36 -04:00
ManDude 2beaa7a340
[decomp] cleanup drawable and ocean stuff (#414)
* use `kmalloc-flags` for goal `kmalloc`

* cleanup some drawable stuff, add offline tests

* cleanup generic-h a bit

* make decompiler work on 16-bit static data

* cleanup ocean stuff

* fix `ocean-spheres`

* oops forgot this

* I forgot to actually make `ocean-tables`
2021-05-03 08:54:49 -04:00
ManDude 8cc63ff35c
Add a debug PS2 VM to the runtime (#401)
* update VS launch target params

* remove redundant VS launch option

* Add a debug PS2 VM to the runtime, currently only for the DMAC

* Formatting

* remove broken assert

* Avoid weird buffer overflow bug

* Test on `VIF0_DMA_BANK`!

* Add a docstring

* patch pointers for the other dma channels

* patch DMAC pointer

* remove dead leftover code

* Change default return value for `get_vm_ptr`
2021-05-01 00:32:19 -04:00
water111 fe336b7b5f
[compiler] fix warnings in repl lib and add macros to autocomplete (#317)
* fix warnings in repl lib and add macros to autocomplete

* fix crash on ctrl-c, build runtime as static lib and make goos prompt look fancier

* some tweaks for linux build
2021-03-11 12:54:16 -05:00
ManDude 9430b4772a
Implement runtime display (test) (#318)
* Implement runtime display (test)

* Update runtime.cpp

* [game display] add "-nodisplay" argument

* style fixes

* Update gfx.cpp

* [deci2server] fix deadlock when killing a Deci2Server

* add libxrandr to linux github test

* correct package name to libxrandr-dev

* set g_main_thread_id in exec_runtime

* add libxinerama to linux test packages

* correct the name

* add libxcursor1 package

* Update linux-workflow.yaml

* add libxi-dev

* fix constructor for g_main_thread_id

* fix submodules + use -nodisplay during tests

* move the gfx loop to its own function and use a lambda for exit conditions

* fix include

* fix include

* fix includes (for real this time)
2021-03-09 23:51:28 -05:00
water111 9074a35b9b
[Decompiler] Fix printing of lets (#314)
* fix let prints and windows warnings

* missing include for windows

* windows again
2021-03-07 12:01:59 -05:00
water111 9d3b056b7a
Fix asize bug, decompile a few files (#293)
* fix bug in asize of basic

* more decomp
2021-02-28 18:05:07 -05:00
water111 5ec9a91eb9
Decompiler fixes + decompiling (#276)
* decomp pad

* more decompilation

* update

* fix test name
2021-02-22 09:36:30 -05:00
water111 4b1b7e9507
[Decompile] DMA and similar (#275)
* add some dma

* clean up

* add progress script and make codacy happy
2021-02-21 11:02:28 -05:00
water111 8775840265
[Decomp] Decompile engine math library types (#272)
* decompile some stuff

* fix typo

* playing around with trigonometry

* more progress on trig

* more trig

* comments and small fixes

* finish trig
2021-02-20 11:42:46 -05:00
water111 f1a93886e7
[Decomp] Decompile gstring (#267)
* decompile gstring

* update

* Update code_status.md

* Update code_status.md

* decompile gstate

* add test for states, hope it passes

* also test throw and catch xmms

* update doc
2021-02-16 20:37:48 -05:00
water111 e01e065170
[gcommon decomp] compiler and decompiler fixes (#239)
* wip

* decompile file-io

* a

* fix
2021-02-07 18:21:00 -05:00
bb010g 2436a8a541
Nixpkgs support (#228)
* Use env shebangs

* CMake cleanup, install() invocations, & CTest

`ctest` & the `test` target work now

* Nixpkgs support
2021-02-03 21:29:46 -05:00
doctashay e8ad91a454
Arch fixes (#199)
* Change declaration case

Arch Linux is so very picky...

* Remove spdlog (?)
2021-01-17 21:37:08 -05:00
water111 3331e9cd00
Replace spdlog (#185)
* remove spdlog

* clang format and fix windows

* add format shared

* windows sucks
2021-01-06 12:16:39 -05:00
Tyler Wilding 69f7f46477
Add Address Sanitizer support to MSVC and CMake (#182)
* msvc: Add Address Sanitizer

https://devblogs.microsoft.com/cppblog/addresssanitizer-asan-for-windows-with-msvc/

* cmake: Add Address Sanitizer

* docs: Update ReadME

* see if we can replicate the test failure

* windows fixes maybe

* cmake: Compile with gcc and clang (only coverage on

* hacky try again

* clean up

* fix clang issues

* linting

Co-authored-by: water <awaterford111445@gmail.com>
2021-01-04 23:32:51 -05:00
water111 95c81b675a
add asan build (#179) 2021-01-03 12:31:42 -05:00
water111 c8d382b35c
[Compiler] Improve spills and register backups (#175)
* xmm spill

* improve getting stack variables

* improve symbol getting

* update changelog
2020-12-31 15:59:11 -05:00
water111 4d713d5c8c
[Runtime] misc fixes to runtime and listener (#170)
* misc runtime fixes

* clang format
2020-12-28 18:37:05 -05:00
water111 5cb6368b9a
Clean up asm for format (#164)
* clean up asm for format

* fix windows

* remove rpc-call hack

* revert cmake version change

* clang format

* asm fix for windows
2020-12-23 11:15:41 -05:00
water111 11a82bbf08
[Compiler] Add static data features (#162)
* support static pairs

* also support strings

* reorganize static stuff

* add test

* support inlined fields

* add missing type check
2020-12-19 15:21:29 -05:00
water111 ba919a069c
Add another kernel test, fix small bugs (#156)
* temp

* run function in process test

* windows debug

* debug

* update

* update

* again

* update

* fix same bug in debugger
2020-12-10 20:26:40 -05:00
water111 06918e1fea
Implement gkernel: Part 1 (#150)
* start gkernel implementation

* progress

* more of kernel

* swap to new dispatcher, will it work on windows

* update
2020-12-05 17:09:46 -05:00
water111 ea479bee98
Add enums and some cleanup (#148)
* support enums

* better compiler warnings

* tweaks to build with clang
2020-12-02 19:51:42 -05:00
water111 09142d1712
Support "game count" and v4 objects (#140)
* generate object, but not supported in linker yet

* add link and tests

* update types
2020-11-24 20:48:38 -05:00
water111 19b8bb81c9
Add the STR RPC to overlord and game code (#134)
* work in progress streaming rpc, simple test is working

* actually add the test

* debug windows failure

* windows fix maybe

* windows 2

* use str-load-status

* update types
2020-11-22 12:59:55 -05:00
water111 660ef41136
Update documentation and clean up (#129)
* cleanup

* clean up file layout
2020-11-21 12:52:38 -05:00
water111 953c1512db
Process Text Files in Decompiler (#122)
* begin support for v2

* export game text

* generate text files

* working text load

* fix windows

* add test and clean up game tests a bit

* load the right file

* add separate program to launch the data compiler

* add offline test script
2020-11-19 21:22:16 -05:00
water111 0767321934
Extract Textures (#119)
* temp

* cleanup

* documentation, enable alpha

* add subfolder

* support all textures
2020-11-16 19:57:45 -05:00
water111 951f31878e
[Source Line Debugger] Tracking objects and IR (#115)
* track where segments are when debugging

* missing windows include

* figure out what function we're in

* addr to IR is working
2020-11-13 22:33:57 -05:00
water111 71a894c393
move GOAL stack to GOAL memory (#114)
* move GOAL code stack to GOAL memory

* fix win arg reg and check rsp in debugger

* fix windows maybe and fix some incorrect logging formatters
2020-11-06 21:42:05 -05:00
water111 c09541fa98
Add some debugger memory utilities (#109)
* add some memory utilities

* run waitpid in a separate thread and support very simple breakpoints

* fix breakpoints

* add missing windows stub function

* fix error message on exit
2020-11-06 13:59:39 -05:00
water111 0451a06d76
Set up the compiler to ptrace the runtime (#107)
* set up the compiler to ptrace the runtime

* clang format

* move debugger state to a separate Debugger class

* support registers and break and continue

* documentation and fix windows

* make listener part of compiler, not a separate library

* implement memory read and write

* fix for windows
2020-10-31 14:07:43 -04:00
Tyler Wilding 5a5d88eb17 Amalgamate FileIO and remove duplicate Timer header
Closes #8
2020-10-25 02:27:48 -04:00
water111 ef1e8b9072
Tweak logger settings to make logging happen in order (#73)
* tweak logger settings to make logging happen in order

* clang format
2020-10-11 19:55:29 -04:00
Shay 0f916ed81e More minor fixes
spdlog now builds as a library with nasm workaround
2020-10-08 22:39:12 -06:00
doctashay 9bbb47006c Small fixes
Logging names are now less ambiguous. We can adopt one of two styling conventions: create a logger object for each component of the project, and log every output into a large jak.log file; or we can have separate text files for the compiler log, runtime log, etc. I think the former will be the most efficient but may also make filtering harder.

Also replaced more old prints with spdlog equivalents
2020-10-06 16:18:59 -06:00
doctashay 953e7c1ad5 Temp fix for spdlog + initial log to file implementation
Reduces verbose output by logging additional information to logs/game.log.
2020-10-06 16:03:33 -06:00
Shay c5681a6cc7 Auto stash before merge of "logging" and "upstream/w/cfg_2_ir" 2020-10-06 15:35:57 -06:00
water 0fbffcd409 add cond to compare conversion 2020-10-03 18:36:02 -04:00
water111 d03080c463
Build spdlog as a shared library (#59)
* change build settings for spdlog

* fix typo

* trying with j4 now

* try as a shared library

* add shadow warning back
2020-10-03 10:33:20 -04:00
doctashay c2cb053a5d
spdlog implementation (#58)
* Commit new spdlog implementation 

Hopefully resolves Linux build dependency errors

* clang formatting

* Fix Linux-only definition

Found the culprit!

* More Linux fixes

Linus Torvalds have mercy on my soul

* Replace printf logging with spdlog equivalent

Preserve previous printfs in comments for now. Spdlog needs to be configured to be thread-safe. Few additional printfs to convert later. No changes have been made to GOAL's internal printing system

* clang-format stuff

* ugh more clang-format

why

* Another shot

* CMakeLists.txt update

Fix issues related to spdlog version targeting

* Remove old prints + fix log types

Up next is the transition to a git submodule, should be simple enough

* spdlog is now a git submodule

* adapted for project

* Linux fix

* More fixes

Yikes

* Update for linux

I should really fix my WSL environment

* Update workflow.yaml

Hopefully will resolve issues with GitHub Actions on Linux
2020-10-03 09:39:04 -04:00
water111 c9b53d51ff
Compiler Cleanup (Part 2) (#56)
* check on windows

* fix windows build

* version test

* clean up - will it work on windows

* fix formatting
2020-09-25 21:11:27 -04:00
water111 15051ec5dd
Fix high cpu usage from iop thread (#55)
* fix crazy cpu usage from iop thread

* clang-format
2020-09-24 22:15:01 -04:00
water111 2d11e44eaf
Compiler Cleanup and Documentation (#54)
* start cleanup

* fix typos

* fix syntax highlighting in doc

* lots of documentation updates

* clean and add tests

* more documentation and more error messages

* more document and try building kernel differently
2020-09-24 17:19:23 -04:00
water111 27b865c0df
Add methods and pointers (#53)
* method calls and sorting

* add more tests and fix some alias stuff
2020-09-19 16:50:42 -04:00
water111 cee6c21603
Add basic features for types and objects (#52)
* started adding simple functions in gcommon

* more tests and features

* more tests, debug windows

* debug prints for windows

* back up some regs for windows

* remove debugging prints
2020-09-19 13:22:14 -04:00
water 3f193013b9 fix bug 2020-09-15 18:57:18 -04:00
water ca3acdb5ec add format order test and fix reg order for windows 2020-09-15 18:49:55 -04:00
water111 bb854dd81e
Fix a Listener Bug (#45)
* try a fix

* add debug prints

* more prints

* try again

* more stderr

* print again

* am idiot

* cleanup

* cleanup
2020-09-14 22:14:07 -04:00
water111 7ffcfc4703
Merge pull request #41 from xTVaser/pragma-once
Add #pragma once to all header files
2020-09-14 20:31:41 -04:00
water111 0d0541d1c9
Merge pull request #40 from xTVaser/windows/compiler-warnings
Resolve a good chunk of windows compiler warnings
2020-09-14 20:31:10 -04:00
Tyler Wilding 345b8e30d8 Resolve a good chunk of windows compiler warnings
Mostly revolved around the new MSVC check for functions that don't cover all paths (ie. a switch statement without a default case).  It appears to not see an assert as a valid default case.

I switched assert(false) to exceptions in these cases.  I believe this should also abort the program, but will also provide a hopefully useful message?  Hopefully this is an improvement.

Resolves #32
2020-09-13 22:02:27 -04:00
Tyler Wilding 80d04a8fbd Remove SystemThread performance stats
Resolves #18
2020-09-13 21:38:56 -04:00
Tyler Wilding 9737dfad34 Add #pragma once to all headers
Resolves #19
2020-09-13 21:36:35 -04:00
water 9ec9b5a22a add conditional stuff 2020-09-13 17:34:02 -04:00
water111 90a7e9b4b9
Add addition and subtraction for integers, build macros, dgo building, and build/load test (#35)
* see if math works on windows

* add dgo

* windows debug

* windows debug 2

* one more debug try

* add extra debug print and change logic for slashes

* update

* again

* try again

* remove build game

* remove build game

* add back build-game

* remove runtime from test

* test

* reduce number of files

* go to c++ 14

* big stacks

* increase stack size again

* clean up cmake files
2020-09-12 20:41:12 -04:00
water111 d56540f8c0
Add lambda and static objects (#30)
* add some more tests for let

* support static strings

* add function calling

* add prints for windows debgu

* one test only

* try swapping r14 and r15 in windows

* swap back

* disable defun for now

* fix massive bug

* fix formatting
2020-09-12 13:11:42 -04:00
water111 de5aa7e5e4
Move duplicated utilities to the common util folder and remove NEXT_DIR (#29)
* move things to the common library and remove next_dir

* fix for windows

* one last windows fix

* last fix for real this time

* debug listener test

* fix listener threading bug
2020-09-10 20:03:31 -04:00
water a1474d3318 Merge branch 'master' of https://github.com/water111/jak-project into w/ir 2020-09-09 17:37:12 -04:00
water 83b6db9f33 update to c++17 2020-09-09 17:00:46 -04:00
water 2e32bf7923 semicolon 2020-09-08 20:58:03 -04:00
water c04ab1a6ff try different print format for windows 2020-09-08 20:55:48 -04:00
water fb62936a94 add debug prints 2020-09-08 20:37:03 -04:00
water f73b6de254 try setting a timeout on the accepted socket 2020-09-08 20:29:48 -04:00
water 4825b0d1e5 add a slash on windows 2020-09-08 20:14:37 -04:00
water 6de430b4ef temporary hacks in fakeiso to see if it can work in windows 2020-09-08 20:10:03 -04:00
water f0328dcc92 Merge branch 'master' of https://github.com/water111/jak-project into w/ir 2020-09-08 19:39:39 -04:00
Tyler Wilding fff501d786 Corrections to fix linux, and further cleanup 2020-09-08 19:15:14 -04:00
Tyler Wilding 4b6223a6d0 Extract adding timeout to socket 2020-09-08 14:33:28 -04:00
Tyler Wilding 871f1b43b0 Remove the problematic Multiple Deci tests 2020-09-08 14:12:04 -04:00
Tyler Wilding f8fccbf7a6 Additional progress, listener tests are starting to pass 2020-09-08 00:01:46 -04:00
Tyler Wilding aea7b692e4 Got rid of a lot of windows ifdefs 2020-09-07 20:00:02 -04:00
Tyler Wilding 84e0bee6f4 Use shim in Listener/Deci2Server 2020-09-07 19:59:44 -04:00
water 1394cf13cd 17 of 124 compiler tests passing 2020-09-07 19:17:48 -04:00
water ee4eb9f128 add some basic symbol stuff 2020-09-07 13:28:16 -04:00
water d49b01e310 working return integer tests as part of gtest 2020-09-06 16:58:25 -04:00
Tyler Wilding 905d443115 Cleanup test step 2020-09-04 23:31:22 -04:00
Tyler Wilding 6187b31f2c Changes needed to get build passing 2020-09-04 23:24:16 -04:00
water 7d1625734f small fixes for linux 2020-09-04 20:00:45 -04:00
Tyler Wilding fa40b68a37 Aren't functions hoisted..? 2020-09-04 19:43:45 -04:00
Tyler Wilding d86775878e Address review feedback 2020-09-04 19:40:45 -04:00
Tyler Wilding dcde103c26 Address compiler and test failures 2020-09-03 23:56:35 -04:00
Tyler Wilding 39eb3a90ea Fix for cmake 2020-09-03 22:42:04 -04:00
Tyler Wilding ef09eb12c8 Add a bunch of #ifdefs to keep things working as expected on linux 2020-09-03 22:24:50 -04:00
Tyler Wilding f68f220e5b Merge remote-tracking branch 'water111/master' into windows-nodeci 2020-09-03 20:16:28 -04:00
water bf7a496bb0 implement some loads and stores 2020-08-29 19:13:29 -04:00
Tyler Wilding 710e12cfed some cmake adjustments 2020-08-29 15:11:36 -04:00
Tyler Wilding 324d2121b1 push 2020-08-28 21:01:59 -04:00
Tyler Wilding c5bb7aab54 nasm fixes #1 2020-08-28 20:26:27 -04:00
doctaweed 2138beb150 Windows threading fixes
Further cripple Deci2Listener pending Windows implementation, finish converting POSIX threads to std::thread. Hardcoded pathing in overlord\fake_iso.cpp until environment variables can be implemented for Windows.

Currently loads KERNEL.CGO and links gcommon object file, but crashes when executing due to Windows/Linux differences.
2020-08-28 11:59:20 -06:00
water 75f63d8ff3 add typecheck and tests 2020-08-27 16:47:54 -04:00
doctaweed 92976234a1 Replacing std::exception with std::runtime_error 2020-08-26 22:24:03 -06:00
water a32e6288ac Merge branch 'master' of https://github.com/water111/jak-project into w/type-system 2020-08-26 23:29:23 -04:00
doctaweed 86ee6637fe Symbol fixes
Quick fixing a few more unresolved symbols. This should compile as is, but will not run as it requires mman.dll.
2020-08-26 21:12:32 -06:00
water d2992ba4fe type system method tests 2020-08-26 23:07:55 -04:00
Tyler Wilding e0a24a4c21 Merge remote-tracking branch 'doctaweed/windows-nodeci' into windows-proj 2020-08-26 22:28:18 -04:00
doctaweed 8a81ff78dd Windows fixes
Partially addresses issues with unresolved external symbols
2020-08-26 20:23:22 -06:00
Tyler Wilding 51c23aaede A whole bunch of cmake fixes 2020-08-26 22:23:16 -04:00
doctaweed 1dc206edb9 More fixes
Comment out related deci2 code until networking can be reworked.  Resolved std::exception errors with a temporary fix
2020-08-26 19:34:54 -06:00
Tyler Wilding 406549bf6a some small changes 2020-08-26 21:08:18 -04:00
Tyler Wilding e6e96400c8 commit doctor's latest changes 2020-08-26 21:02:24 -04:00
Tyler Wilding c4bd9eaf69 __attribute__ is technically not required. We can probably replace this in a cross platform way like with clang-tidy? 2020-08-26 20:38:42 -04:00
Tyler Wilding 5a2b39641f CMake adjustments, leave edits that didn't change file paths 2020-08-26 20:02:44 -04:00
Tyler Wilding 3c4fcbdd34 clang-format all the things 2020-08-26 01:21:33 -04:00
water acf086a3d2 check in existing work 2020-08-22 22:30:12 -04:00