From 648ff0bdbbd03487681133ee4d5c63348a85892d Mon Sep 17 00:00:00 2001 From: Dethrace Labs <78985374+dethrace-labs@users.noreply.github.com> Date: Mon, 5 Jan 2026 15:24:11 +1300 Subject: [PATCH] removes un-needed files --- .github/workflows/release.yaml | 32 --- DIAGNOST.TXT | 5 - a.out | Bin 33512 -> 0 bytes carma-palette.tga | Bin 31938 -> 0 bytes clang-all | 84 ------ extern.py | 81 ------ lib/BRender-v1.3.2 | 2 +- misc-strings | 251 ----------------- notes.txt | 37 --- palette.tga | Bin 31938 -> 0 bytes postproc.py | 90 ------ reccmp.svg | 119 -------- reorder.py | 74 ----- scancodes.py | 489 --------------------------------- shadetable.tga | Bin 499218 -> 0 bytes shadetablehack.c | 23 -- src/DETHRACE/common/netgame.c | 1 - test.c | 18 -- test.out | Bin 12676 -> 0 bytes tga.c | 200 -------------- tools/annotate.py | 160 ----------- 21 files changed, 1 insertion(+), 1665 deletions(-) delete mode 100644 .github/workflows/release.yaml delete mode 100644 DIAGNOST.TXT delete mode 100755 a.out delete mode 100644 carma-palette.tga delete mode 100644 clang-all delete mode 100755 extern.py delete mode 100644 misc-strings delete mode 100644 notes.txt delete mode 100644 palette.tga delete mode 100755 postproc.py delete mode 100644 reccmp.svg delete mode 100755 reorder.py delete mode 100755 scancodes.py delete mode 100644 shadetable.tga delete mode 100644 shadetablehack.c delete mode 100644 test.c delete mode 100755 test.out delete mode 100644 tga.c delete mode 100755 tools/annotate.py diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml deleted file mode 100644 index f2e2111b..00000000 --- a/.github/workflows/release.yaml +++ /dev/null @@ -1,32 +0,0 @@ -name: Release - -on: - push: - tags: - - 'v*' - -jobs: - create-release: - name: Create Release - # needs: [ci] - if: startsWith(github.ref, 'refs/tags/') - runs-on: ubuntu-latest - steps: - - name: Fetch Build Artifacts - uses: actions/download-artifact@v4 - with: - path: artifacts - - name: Calculate Variables - id: vars - run: | - echo "ref_name_without_v=$(echo ${GITHUB_REF_NAME} | cut -c2-)" >>$GITHUB_OUTPUT - - name: Create Release - id: create_release - uses: softprops/action-gh-release@v2 - with: - draft: false - prerelease: false - name: Dethrace ${{ steps.vars.outputs.ref_name_without_v }} - generate_release_notes: true - files: | - artifacts/** diff --git a/DIAGNOST.TXT b/DIAGNOST.TXT deleted file mode 100644 index 1413096a..00000000 --- a/DIAGNOST.TXT +++ /dev/null @@ -1,5 +0,0 @@ -DIAGNOSTIC OUTPUT -Date / time : Mon Mar 24 16 : 32 : 33 1997 - - - 0.00: FATAL ERROR: This .exe must have KEYBOARD.COK in the DATA folder. diff --git a/a.out b/a.out deleted file mode 100755 index f69fdd8261af36f4f56fd5bd3966ff7277f94373..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33512 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 -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -function usage { - echo "Usage: $0 DIR..." - exit 1 -} - -if [ $# -eq 0 ]; then - usage -fi - -# Variable that will hold the name of the clang-format command -FMT="" - -# Some distros just call it clang-format. Others (e.g. Ubuntu) are insistent -# that the version number be part of the command. We prefer clang-format if -# that's present, otherwise we work backwards from highest version to lowest -# version. -for clangfmt in clang-format{,-{4,3}.{9,8,7,6,5,4,3,2,1,0}}; do - if which "$clangfmt" &>/dev/null; then - FMT="$clangfmt" - break - fi -done - -# Check if we found a working clang-format -if [ -z "$FMT" ]; then - echo "failed to find clang-format" - exit 1 -fi - -# Check all of the arguments first to make sure they're all directories -for dir in "$@"; do - if [ ! -d "${dir}" ]; then - echo "${dir} is not a directory" - usage - fi -done - -# Find a dominating file, starting from a given directory and going up. -find-dominating-file() { - if [ -r "$1"/"$2" ]; then - return 0 - fi - if [ "$1" = "/" ]; then - return 1 - fi - find-dominating-file "$(realpath "$1"/..)" "$2" - return $? -} - -# Run clang-format -i on all of the things -for dir in "$@"; do - pushd "${dir}" &>/dev/null - if ! find-dominating-file . .clang-format; then - echo "Failed to find dominating .clang-format starting at $PWD" - continue - fi - find . \ - \( -name '*.c' \ - -o -name '*.cc' \ - -o -name '*.cpp' \ - -o -name '*.h' \ - -o -name '*.hh' \ - -o -name '*.hpp' \) \ - -exec "${FMT}" -i '{}' \; - popd &>/dev/null -done \ No newline at end of file diff --git a/extern.py b/extern.py deleted file mode 100755 index d1582916..00000000 --- a/extern.py +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/env python3 -u - -import sys -import os - -# Usage: find src/DETHRACE -name "*.h" | xargs ./extern.py - -path = 'DETHRACE/' -codegen_path = '/Users/jeff/temp/c1_output2/DETHRACE/source' - -for file_name in sys.argv[1:]: - # print (file_name) - # continue - - f = open(file_name, 'r') - - just_file_name = file_name[file_name.index(path)+len(path):] - - try: - codegen_f = open(codegen_path + '/' + just_file_name, 'r') - except: - print('WARNING could not load file', codegen_path + '/' + just_file_name) - continue - - in_gvs = False - stripped_existing = False - codegen_gvs = [] - while True: - line = codegen_f.readline() - - if line.startswith('extern'): - codegen_gvs.append(line) - - if line == '': - break - - appended = False - lines = [] - while True: - line = f.readline() - - if line == '': - break - - # first function decl - if not appended: - if (line != '' and line[0].isalpha() and '(' in line and line.endswith(');\n') - or line == '#endif\n'): - if stripped_existing == True: - print('pop') - lines.pop() # remove the extra newline - for codegen_gv in codegen_gvs: - lines.append(codegen_gv) - lines.append('\n') - appended = True - - if not line.startswith('extern'): - lines.append(line) - else: - stripped_existing = True - - print(lines) - # in_function = False - # lines = [] - - # while True: - # line = f.readline() - # if line == '': - # break - - # if line[0].isalpha() and '(' in line and line[-2] == '{': - # in_function = True - - outF = open(file_name, "w") - outF.writelines(lines) - outF.close() - - - - - diff --git a/lib/BRender-v1.3.2 b/lib/BRender-v1.3.2 index d440de50..1e3d22b0 160000 --- a/lib/BRender-v1.3.2 +++ b/lib/BRender-v1.3.2 @@ -1 +1 @@ -Subproject commit d440de507a070637eb134ae6aafa5dee36baf6b7 +Subproject commit 1e3d22b0bee8b649ba0db9bdbe04c1a5eebb2d7f diff --git a/misc-strings b/misc-strings deleted file mode 100644 index f2522668..00000000 --- a/misc-strings +++ /dev/null @@ -1,251 +0,0 @@ -0: Invulnerable! -1: Timer frozen -2: Mirror on -3: Mirror off -4: Repairing for free -5: Repair cost: -6: Repair Obstructed -7: Recovery Cost: -8: Opponents visible on map -9: Opponents not visible on map -10: Every opponent wasted!! -11: Running demo game -12: credits -13: credit -14: Lost -15: Empty -16: PROFIT -17: LOSS -18: KILLS -19: WASTED -20: LAP -21: CP -22: Completion bonus: -23: Time bonus: -24: Let the carnage continue... -25: Nice and fluffy mode -26: Every ped murdered!! -27: Your current rank is -28: Retail: -29: You pay: -30: Refund: -31: Credits: -32: Yours already -33: You got it! -34: No other cars to choose from yet -35: Original driver was -36: Your original car -37: ACTION REPLAY UNAVAILABLE -38: Standard camera -39: Panning camera -40: Action-tracking camera -41: Instant repair -42: Final lap -43: Wrong checkpoint! -44: Bad boy! -45: credit fine -46: WASTED -47: PRFT -48: Recovering for free -49: Bad girl! -50: No car textures -51: Transparent car textures only -52: Full car textures -53: No road textures -54: Road textures -55: No wall textures -56: Linear wall textures -57: Best wall textures -58: has joined the game -59: DRIVEN TO DESTRUCTION -60: CAR CRUSHER -61: CARNAGE ACCUMULATOR -62: CHECKPOINT STAMPEDE -63: SUDDEN DEATH -64: TERMINAL TAG -65: FOX 'N' HOUNDS -66: UNUSED -67: UNUSED -68: STARTING -69: READY -70: PLAYING -71: CLOSED -72: OPEN -73: GAME TERMINATED BY HOST! -74: has left the game -75: CAN'T SAVE A GAME IN NETWORK PLAY (NICE TRY...) -76: SORRY, BUT NETWORK PLAY IS NOT AVAILABLE (CHECK CABLING, DRIVERS ETC) -77: UNKNOWN -78: READY -79: LOADING -80: IN WRECKS GALLERY -81: IN RACE SUMMARY -82: NOT RESPONDING -83: RACING -84: IN MAIN MENU -85: RECOVERING -86: IN ACTION REPLAY -87: HOST ABANDONED RACE! -88: HOST -89: SORRY, BUT YOU'RE TOO LATE! -90: IS NO LONGER RESPONDING -91: PANIC!! HOST HAS DISAPPEARED! -92: IN -93: OUT -94: CREDITS -95: CAN'T AFFORD TO REPAIR! -96: CAN'T AFFORD TO RECOVER! -97: RECOVERY IN -98: SECOND -99: SECONDS -100: Track appears very quickly -101: Track appears quite quickly -102: Track appears quite late -103: Track appears very late -104: No shadows -105: Shadow under own car -106: Shadow under main cars -107: Shadow under all cars -108: Sky texture on -109: Sky texture off -110: There's no sky texture for this race -111: Depth cueing on -112: Depth cueing off -113: There's no depth cueing for this race -114: Yon increased to %d -115: Yon decreased to %d -116: Fewest sounds -117: Partial sound -118: All sounds -119: Car simplification level %d -120: Accessories on -121: Accessories off -122: Smoke on -123: Smoke off -124: Net games always accessorized -125: RECOVERY CANCELLED -126: AND -127: WASTED EACH OTHER -128: RACE CHANGED DURING LOADING. PLEASE TRY TO JOIN GAME AGAIN. -129: WRONG TEXT.TXT -130: WRONG TEXT.TXT -131: WRONG TEXT.TXT -132: WRONG TEXT.TXT -133: WRONG TEXT.TXT -134: WRONG TEXT.TXT -135: WRONG TEXT.TXT -136: WRONG TEXT.TXT -137: WRONG TEXT.TXT -138: WRONG TEXT.TXT -139: WRONG TEXT.TXT -140: WRONG TEXT.TXT -141: WRONG TEXT.TXT -142: WRONG TEXT.TXT -143: WRONG TEXT.TXT -144: WRONG TEXT.TXT -145: WRONG TEXT.TXT -146: WRONG TEXT.TXT -147: WRONG TEXT.TXT -148: WRONG TEXT.TXT -149: WRONG TEXT.TXT -150: Accelerate -151: Brake/rev -152: Turn left -153: Turn right -154: Handbrake -155: Repair -156: Recover -157: Action replay -158: Wheelspin -159: Cockpit toggle -160: Look left -161: Look forward -162: Look right -163: Map toggle -164: Buy Armour -165: Buy Power -166: Buy Offense -167: Send Message -168: WRONG TEXT.TXT -169: WRONG TEXT.TXT -170: Car added to change car list -171: wasted by -172: COMMITTED SUICIDE -173: WASTED -174: YOU'RE ALREADY AT MAX! -175: ARMOUR STRENGTHENED -176: ENGINE POWER INCREASED -177: INCREASED OFFENSIVE -178: ONLY AVAILABLE IN NET GAMES -179: CAN'T AFFORD IT (% CREDITS) -180: TARGET -181: TARGET -182: TARGET -183: LIMIT -184: IS OUT -185: IS IT -186: HA HA YOU'RE IT! -187: IS NOW THE FOX -188: YOU'RE THE FOX! -189: IS THE WINNER -190: UNAVAILABLE IN DEMO -191: ENTER NAME -192: NOT ENOUGH MEMORY -193: LOW MEMORY MODE INVOKED -194: FIGHT TO THE DEATH - LAST SURVIVOR IS THE WINNER. A TRUE DERBY OF DESTRUCTION. -195: CONTINUOUS METAL WRECKING MAYHEM. WASTE YOUR OPPONENTS TO GET POINTS, LOSE A POINT IF YOU WASTE YOURSELF. -196: MASSACRE MODE: KILL MORE peds THAN ANYONE ELSE. -197: FIRST ONE TO GO THROUGH ALL CHECKPOINTS - IN ANY ORDER - IS THE WINNER. -198: LAST ONE THROUGH EACH CHECKPOINT - IN ORDER - IS KNOCKED OUT. -199: THE CLOCK TICKS UP FOR THE CAR THAT IS 'IT'. YOU'RE KNOCKED OUT WHEN IT REACHES THE LIMIT. -200: THE FOX'S CLOCK TICKS UP TOWARDS A TARGET. HIT HIM TO STOP HIS CLOCK AND START YOURS. -201: FIRST RACE: -202: RACES WILL CONTINUE DOWN THIS LIST -203: SUBSEQUENT RACES WILL BE RANDOM -204: THIS CAR ALREADY TAKEN BY -205: AVAILABLE -206: HOST -207: GAME TYPE -208: PLAYERS -209: STATUS -210: PLAYER -211: PLAYED -212: WON -213: SCORE -214: THE FOX CAN'T DO THAT! -215: ONLY 'IT' CAN DO THAT! -216: COP -217: WATCHING -218: RACE LEADER -219: THAT HALVED YOUR KILL COUNT! -220: THAT LOST YOU A CHECKPOINT! -221: BACK TO THE START! -222: THAT HALVED YOUR TIME! -223: PLEASE INSERT THE SplatPack CD -224: TRIED TO CHEAT! -225: MANAGED TO CHEAT!!! -226: MESSAGE SENT -227: ENTER MESSAGE: -228: PLEASE WAIT: HOST HAS PAUSED -229: YOU MUST USE THE APPROPRIATE SYSTEM CONTROL PANEL TO CALIBRATE JOYSTICKS ON THIS PLATFORM -230: SORRY, BUT YOU CANNOT CALIBRATE A JOYSTICK DURING A RACE WHEN PLAYING IN SVGA -231: HIT ESCAPE TO ABORT -232: HIT ESCAPE TO FINISH. JOYSTICK #1 SETTINGS WILL BE RETAINED -233: PLEASE MOVE JOYSTICK #1 TO THE TOP-LEFT AND HIT ANY KEY -234: PLEASE MOVE JOYSTICK #1 TO THE BOTTOM-RIGHT AND HIT ANY KEY -235: PLEASE MOVE JOYSTICK #1 TO THE CENTRE AND HIT ANY KEY -236: PLEASE MOVE JOYSTICK #2 TO THE TOP-LEFT AND HIT ANY KEY -237: PLEASE MOVE JOYSTICK #2 TO THE BOTTOM-RIGHT AND HIT ANY KEY -238: PLEASE MOVE JOYSTICK #2 TO THE CENTRE AND HIT ANY KEY -239: A NUMBER FOR YOU TO LOOK AT: -240: ANOTHER NUMBER FOR YOU TO LOOK AT: -241: 'IT' -242: TOO LATE TO CANCEL -243: Could not find the SplatPack CD -244: NOT AVAILABLE IN EVALUATION COPY -245: EVALUATION COPY -246: (null) -247: (null) -248: (null) -249: (null) -250: (null) \ No newline at end of file diff --git a/notes.txt b/notes.txt deleted file mode 100644 index 754336d2..00000000 --- a/notes.txt +++ /dev/null @@ -1,37 +0,0 @@ -gProgram_state {credits=0,credits_earned=0,credits_lost=0,view_change_start=0u,pratcam_move_start=0u,peds_killed=0,sausage_eater_mode=0,rank=0,loaded=0,last_slot=0,skill_level=1,parts_shop_visited=0,racing=0,cut_scene=0,saving=0,loading=0,dont_save_or_load=0,dont_load=0,mirror_on=1,prat_cam_on=1,cockpit_on=1,cockpit_image_index=0,current_render_left=0,current_render_top=7,current_render_right=320,current_render_bottom=168,frame_rate_headup=0,revs=0,music_volume=4,effects_volume=4,current_race_index=0,redo_race_index=0,credits_per_rank=0,game_completed=0,number_of_cars=0,current_car_index=0,which_view=eView_undefined,new_view=eView_undefined,pending_view=eView_undefined,old_view=eView_undefined,view_type=eVT_Scene,prog_status=eProg_idling,frank_or_anniness=eFrankie,auto_parts_reply=eAP_auto,current_car={index=0,disabled=0,driver=eDriver_local_human,car_master_actor=0,min_torque_squared= 0.0,break_off_radians_squared= 0.0,v={v={ 0.0, 0.0, 0.0}},old_v={v={ 0.0, 0.0, 0.0}},velocity_car_space={v={ 0.0, 0.0, 0.0}},oldmat={m={{ 0. tProgram_state -gRender_screen 0x2574C78:{_reserved=5265248u,identifier=0,pixels=0x769280,pixels_qualifier=43u,map=0,src_key={low=0u,high=0u},dst_key={low=0u,high=0u},key=0u,row_bytes=320,mip_offset=0,type=3u,flags=6u,copy_function=0u,base_x=0u,base_y=7u,width=320u,height=161u,origin_x=160,origin_y=80,user=0,stored=0} br_pixelmap * -gBack_screen 0x25749B8:{_reserved=5265248u,identifier=0,pixels=0x769280,pixels_qualifier=43u,map=0,src_key={low=0u,high=0u},dst_key={low=0u,high=0u},key=0u,row_bytes=320,mip_offset=0,type=3u,flags=6u,copy_function=0u,base_x=0u,base_y=0u,width=320u,height=200u,origin_x=0,origin_y=0,user=0,stored=0} br_pixelmap * - -#define S0 0 -#define S1 1 -#define BR_DIV(a, b) ((a) / (b)) -#define BR_MUL(a, b) ((a) * (b)) -#define DR_MUL3(a, b, c) ((a) * (b) * (c)) -#define DR_MUL4(a, b, c, d) ((a) * (b) * (c) * (d)) -float kWorld_scale = 6.9; -float kUnderwater_ability_factor = 0.6; -float kGravity = 10.0; -#define BR_SQRT(a) ((br_scalar)sqrt(a)) -#define BR_LENGTH2(a, b) ((br_scalar)sqrt((a) * (a) + (b) * (b))) -#define BR_LENGTH3(a, b, c) ((br_scalar)sqrt((a) * (a) + (b) * (b) + (c) * (c))) -#define BR_SQR(a) ((a) * (a)) -#define BR_SUB(a, b) ((a) - (b)) -#define BR_ABS(a) ((br_scalar)fabs(a)) -#define BrIntToScalar(i) ((br_scalar)(i)) -#define BrScalarToInt(i) ((int)(i)) -#define BrFloatToScalar(f) (f) -#define mHuman_car(c) (c->driver >= eDriver_net_human) -#define mLocal_car(c) (c->driver >= eDriver_local_human) -#define mCar_car(c) (car->driver > eDriver_non_car) -float kMax_damage_level = 100; -float kHandbrake_fail_damage = 60; -float kMin_omega = 0.05; -float kMin_speed = 0.000099999997; -#define R 0.5 -#define mSkid_min_v(c) (&gProgram_state.current_car == c ? 20.0 : 60.0) -float kMechanics_frame_period = 40.0; -#define BR_CONST_DIV(a, b) ((a) / (b)) - -for (wheel = 0; wheel < 4; ++wheel) { - //if (*(float*)((char*)car->susp_height + 2 * (wheel & 0xFFFFFFFE)) > (double)car->oldd[wheel] - car->susp_height[wheel >> 1] \ No newline at end of file diff --git a/palette.tga b/palette.tga deleted file mode 100644 index 228f1db4b0c83526ffd5652bd2ffd3b1f86dec3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31938 zcmeI*>2sC!8OHH%!WOV1P^c)f1SAMn7Ll-pCM+fdgCMe6Sp$fG5cV|$LE1oE*h-L9 zKs12{Aws3H1*MfOge6#wrO?t+p)JsYUCHzGnfWEx_~QHlr_=j043l|Y-RI`wx-%i1 z5D@`H)D3=PH+zU`6ns#j!qCXbRS^*WeYfAof5HNIDsF|#Ty+a9_5JQw}$m%Sx7N{`>Y zSFK;asPyzoxw#dJi}C#w&&&3_tEHvY`z79&KE6usn-z=q;9pGiu4I+oICt+GdOX3j z6t+&_>{9%kB){Md?~7vZc2e(W2TV*GowZ_W?uQGH7jL+DdH>bx#kcR$vo156u`QN! zPviCP;-$|keQ$qh5iymcQy%L&HF?z935yQDzV5=d{I3t3EInVR8%?LsZVNrm(%%nW zSwgOtQS2Rw?oRy3`Y&d5p1Wai_Qx~wPOdmsl2>x$M6=E$O=R3gGS37rm&1Pi1%JVH z|4^f5bnI5W-_UyFXE$HGDt2AY;QT}LPMqHu8_T$HtY1%IVeoSCym-&cC@nqQsu`)z zlf8gbJA#*scRAj>o>6+|aHkk1B(d=&&SVBJ7ynS4e{PO{ZC{6n8UG|3k|`XCKO28# z8$U1A|7>*}yaJoxOz@{0{OZ)npEk|U%cJGI`pK(0kJ&kR;U_cJm#qKjT0!xhYqx!( z8rNu$(x~0c*3WEC7de4PUY-5U9atP_2W_-CeDoRli6hOx)u`-v`N3zVYwHb zFzlh8(`)rzR&CJc$l?3iy;eAG$F=oE-UH1#HtF2EL*G#;qi2qoy=?CCEvs|)?>bsk zH|Ft}*tn+>dv_f;tk2lVQ!-bq%+23>s<>4h;$v#{Y2S2M&-RmsBxlWf`TaGS$M)vb zu3bAiI=W@cmT{fql9Q7M4jh=8nwplDwjg~$*0QX%*=x7IyFEWYzu-tg;pxJXFH3?v zH?Li@L(|4R+qE5(*kkOV0W-#pT{36Z>ZO_6*1es-bH~wx2hN>7edW@nTQ_g|!N&i0 zMF^1+{B15rMWK>VS*RjJ2~~w^!hOPbg!_f+!UOW{?P}Zzo7b(__UkfXd9XYLpO%Q_ z!Se9!%Mr#O*AQw7wS?~q!RIn%s3Uw&cu=S-JS03U)Ds>N>I)5ohJwbeVe`5b+kRap zEDx54hSm?Rf~|ku$q3`i8+x=xLhyBiGBg&N2#*R)g&3ik@R-nCXdyf3< zhE{^cZDjMh72AGYCM*w@hgQ}Pu7a(9-N^`j^uqXQYoU$sq|jD)N@yp<3hjjsLPw#K z&{>ERx(GiI;suS{+U9jDw*9(HSRO17@zxKnf~|ku$q3`i8+x<^p{vkM=q~gSo)!{? zB%!Ae{4;$SdI`@6DMD}IS)q@haT9D_w_@9`%Y@~@^3ccn!Bw#JuR9r`k6su*?JGPd z^b?*J`U?Yu;9KI#Fi03I3=v)seki;s3>Ah6!v&4o*XDIAw*9(HSRO17!>u1&1zZ2R zlM%+3H}q&DgptB1A^7(5GK?0+2xEnpB={!(a=a{z7bXZ3g;#`0!el|?j<9*%hHbwt z6P5?d!({6RSHaf5?qq~MdSU!D_^)1Nm?BISrU}!98Ny6qmM~kGBg_@%3G;P8Qz1{-C43-g+;?nVw_@9`%Y@~@^6-K6gR5ZcUw1M> zAH6Vsx?9*I1n(GHh7X0k!am_=!bie>;pf7~!U5r+a7Z{T91%2b@bYCWENI-bHm_T;?bl_(@?d$mZ2jOW*!tIxd@CV_V@JHcm z;ks}`_>=Hw;V;5X;g+Cruh_h9#kOCU3Cn}!;g - - - - - - - CARM95.EXE91.19%91.19%Implemented: 100.00% (2379/2379)Accuracy: 91.19% diff --git a/reorder.py b/reorder.py deleted file mode 100755 index d71962d2..00000000 --- a/reorder.py +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/env python3 -u - -import sys -import os - -# Usage: find src/DETHRACE -name "*.c" | xargs ./reorder.py - -path = 'DETHRACE/' -codegen_path = '/Users/jeff/temp/c1_output2/DETHRACE/source' - -for file_name in sys.argv[1:]: - # print (file_name) - # continue - - f = open(file_name, 'r') - - just_file_name = file_name[file_name.index(path)+len(path):] - - try: - codegen_f = open(codegen_path + '/' + just_file_name, 'r') - except: - print('WARNING could not load file', codegen_path + '/' + just_file_name) - continue - - in_gvs = False - codegen_gvs = [] - while True: - line = codegen_f.readline() - - if ';' in line or '{' in line: - in_gvs = True - - if line.strip() == '': - if in_gvs == True: - in_gvs = False - break - - if in_gvs == True: - codegen_gvs.append(line) - - i = 0 - lines = f.readlines() - while True: - line = lines[i] - if ';' in line or '{' in line: - for codegen_gv in codegen_gvs: - lines.insert(i, codegen_gv) - i = i + 1 - lines.insert(i, "\n\n// END OF NEW ORDERING\n\n") - break - i = i + 1 - - - - # in_function = False - # lines = [] - - # while True: - # line = f.readline() - # if line == '': - # break - - # if line[0].isalpha() and '(' in line and line[-2] == '{': - # in_function = True - - - outF = open(file_name, "w") - outF.writelines(lines) - outF.close() - - - - - diff --git a/scancodes.py b/scancodes.py deleted file mode 100755 index 9c38758a..00000000 --- a/scancodes.py +++ /dev/null @@ -1,489 +0,0 @@ -#!/usr/bin/env python3 -u - -import sys -import os - -codes = { - 'SCANCODE_ESCAPE' : 0x01, -'SCANCODE_1' : 0x02, -'SCANCODE_2' : 0x03, -'SCANCODE_3' : 0x04, -'SCANCODE_4' : 0x05, -'SCANCODE_5' : 0x06, -'SCANCODE_6' : 0x07, -'SCANCODE_7' : 0x08, -'SCANCODE_8' : 0x09, -'SCANCODE_9' : 0x0A, -'SCANCODE_0' : 0x0B, -'SCANCODE_MINUS' : 0x0C, -'SCANCODE_EQUALS' : 0x0D, -'SCANCODE_BACK' : 0x0E, -'SCANCODE_TAB' : 0x0F, -'SCANCODE_Q' : 0x10, -'SCANCODE_W' : 0x11, -'SCANCODE_E' : 0x12, -'SCANCODE_R' : 0x13, -'SCANCODE_T' : 0x14, -'SCANCODE_Y' : 0x15, -'SCANCODE_U' : 0x16, -'SCANCODE_I' : 0x17, -'SCANCODE_O' : 0x18, -'SCANCODE_P' : 0x19, -'SCANCODE_LBRACKET' : 0x1A, -'SCANCODE_RBRACKET' : 0x1B, -'SCANCODE_RETURN' : 0x1C, -'SCANCODE_LCONTROL' : 0x1D, -'SCANCODE_A' : 0x1E, -'SCANCODE_S' : 0x1F, -'SCANCODE_D' : 0x20, -'SCANCODE_F' : 0x21, -'SCANCODE_G' : 0x22, -'SCANCODE_H' : 0x23, -'SCANCODE_J' : 0x24, -'SCANCODE_K' : 0x25, -'SCANCODE_L' : 0x26, -'SCANCODE_SEMICOLON' : 0x27, -'SCANCODE_APOSTROPHE' : 0x28, -'SCANCODE_GRAVE' : 0x29, -'SCANCODE_LSHIFT' : 0x2A, -'SCANCODE_BACKSLASH' : 0x2B, -'SCANCODE_Z' : 0x2C, -'SCANCODE_X' : 0x2D, -'SCANCODE_C' : 0x2E, -'SCANCODE_V' : 0x2F, -'SCANCODE_B' : 0x30, -'SCANCODE_N' : 0x31, -'SCANCODE_M' : 0x32, -'SCANCODE_COMMA' : 0x33, -'SCANCODE_PERIOD' : 0x34, -'SCANCODE_SLASH' : 0x35, -'SCANCODE_RSHIFT' : 0x36, -'SCANCODE_MULTIPLY' : 0x37, -'SCANCODE_LMENU' : 0x38, -'SCANCODE_SPACE' : 0x39, -'SCANCODE_CAPITAL' : 0x3A, -'SCANCODE_F1' : 0x3B, -'SCANCODE_F2' : 0x3C, -'SCANCODE_F3' : 0x3D, -'SCANCODE_F4' : 0x3E, -'SCANCODE_F5' : 0x3F, -'SCANCODE_F6' : 0x40, -'SCANCODE_F7' : 0x41, -'SCANCODE_F8' : 0x42, -'SCANCODE_F9' : 0x43, -'SCANCODE_F10' : 0x44, -'SCANCODE_NUMLOCK' : 0x45, -'SCANCODE_SCROLL' : 0x46, -'SCANCODE_NUMPAD7' : 0x47, -'SCANCODE_NUMPAD8' : 0x48, -'SCANCODE_NUMPAD9' : 0x49, -'SCANCODE_SUBTRACT' : 0x4A, -'SCANCODE_NUMPAD4' : 0x4B, -'SCANCODE_NUMPAD5' : 0x4C, -'SCANCODE_NUMPAD6' : 0x4D, -'SCANCODE_ADD' : 0x4E, -'SCANCODE_NUMPAD1' : 0x4F, -'SCANCODE_NUMPAD2' : 0x50, -'SCANCODE_NUMPAD3' : 0x51, -'SCANCODE_NUMPAD0' : 0x52, -'SCANCODE_DECIMAL' : 0x53, -'SCANCODE_OEM_102' : 0x56, -'SCANCODE_F11' : 0x57, -'SCANCODE_F12' : 0x58, -'SCANCODE_F13' : 0x64 , -'SCANCODE_F14' : 0x65 , -'SCANCODE_F15' : 0x66 , -'SCANCODE_KANA' : 0x70 , -'SCANCODE_ABNT_C1' : 0x73 , -'SCANCODE_CONVERT' : 0x79 , -'SCANCODE_NOCONVERT' : 0x7B , -'SCANCODE_YEN' : 0x7D , -'SCANCODE_ABNT_C2' : 0x7E , -'SCANCODE_NUMPADEQUALS' : 0x8D, -'SCANCODE_PREVTRACK' : 0x90 , -'SCANCODE_AT' : 0x91 , -'SCANCODE_COLON' : 0x92 , -'SCANCODE_UNDERLINE' : 0x93 , -'SCANCODE_KANJI' : 0x94 , -'SCANCODE_STOP' : 0x95 , -'SCANCODE_AX' : 0x96 , -'SCANCODE_UNLABELED' : 0x97 , -'SCANCODE_NEXTTRACK' : 0x99 , -'SCANCODE_NUMPADENTER' : 0x9C , -'SCANCODE_RCONTROL': 0x9D, -'SCANCODE_MUTE': 0xA0 , -'SCANCODE_CALCULATOR': 0xA1 , -'SCANCODE_PLAYPAUSE': 0xA2 , -'SCANCODE_MEDIASTOP': 0xA4 , -'SCANCODE_VOLUMEDOWN': 0xAE , -'SCANCODE_VOLUMEUP': 0xB0 , -'SCANCODE_WEBHOME': 0xB2 , -'SCANCODE_NUMPADCOMMA': 0xB3 , -'SCANCODE_DIVIDE': 0xB5 , -'SCANCODE_SYSRQ': 0xB7, -'SCANCODE_RCONTROL' : 0x9D, -'SCANCODE_RMENU': 0xB8 , -'SCANCODE_PAUSE': 0xC5 , -'SCANCODE_HOME': 0xC7 , -'SCANCODE_UP': 0xC8 , -'SCANCODE_PRIOR': 0xC9 , -'SCANCODE_LEFT': 0xCB , -'SCANCODE_RIGHT': 0xCD , -'SCANCODE_END': 0xCF , -'SCANCODE_DOWN': 0xD0 , -'SCANCODE_NEXT': 0xD1 , -'SCANCODE_INSERT': 0xD2 , -'SCANCODE_DELETE': 0xD3 -} - -keycodes = { - 'KEY_SHIFT_ANY' : 0, - 'KEY_ALT_ANY' : 1, - 'KEY_CTRL_ANY' : 2, - 'KEY_CTRL_ANY_2' : 3, - 'KEY_CAPSLOCK' : 4, - 'KEY_RSHIFT' : 5, - 'KEY_RALT' : 6, - 'KEY_RCTRL' : 7, - 'KEY_LSHIFT' : 8, - 'KEY_LALT' : 9, - 'KEY_LCTRL' : 10, - 'KEY_0' : 11, - 'KEY_1' : 12, - 'KEY_2' : 13, - 'KEY_3' : 14, - 'KEY_4' : 15, - 'KEY_5' : 16, - 'KEY_6' : 17, - 'KEY_7' : 18, - 'KEY_8' : 19, - 'KEY_9' : 20, - 'KEY_A' : 21, - 'KEY_B' : 22, - 'KEY_C' : 23, - 'KEY_D' : 24, - 'KEY_E' : 25, - 'KEY_F' : 26, - 'KEY_G' : 27, - 'KEY_H' : 28, - 'KEY_I' : 29, - 'KEY_J' : 30, - 'KEY_K' : 31, - 'KEY_L' : 32, - 'KEY_M' : 33, - 'KEY_N' : 34, - 'KEY_O' : 35, - 'KEY_P' : 36, - 'KEY_Q' : 37, - 'KEY_R' : 38, - 'KEY_S' : 39, - 'KEY_T' : 40, - 'KEY_U' : 41, - 'KEY_V' : 42, - 'KEY_W' : 43, - 'KEY_X' : 44, - 'KEY_Y' : 45, - 'KEY_Z' : 46, - 'KEY_GRAVE' : 47, - 'KEY_MINUS' : 48, - 'KEY_EQUALS' : 49, - 'KEY_BACKSPACE' : 50, - 'KEY_RETURN' : 51, - 'KEY_KP_ENTER' : 52, - 'KEY_TAB' : 53, - 'KEY_SLASH' : 54, - 'KEY_UNKNOWN_55' : 55, - 'KEY_SEMICOLON' : 56, - 'KEY_APOSTROPHE' : 57, - 'KEY_PERIOD' : 58, - 'KEY_COMMA' : 59, - 'KEY_LBRACKET' : 60, - 'KEY_RBRACKET' : 61, - 'KEY_BACKSLASH' : 62, - 'KEY_ESCAPE' : 63, - 'KEY_INSERT' : 64, - 'KEY_DELETE' : 65, - 'KEY_HOME' : 66, - 'KEY_END' : 67, - 'KEY_PAGEUP' : 68, - 'KEY_PAGEDOWN' : 69, - 'KEY_LEFT' : 70, - 'KEY_RIGHT' : 71, - 'KEY_UP' : 72, - 'KEY_DOWN' : 73, - 'KEY_KP_NUMLOCK' : 74, - 'KEY_KP_DIVIDE' : 75, - 'KEY_KP_MULTIPLY' : 76, - 'KEY_KP_MINUS' : 77, - 'KEY_KP_PLUS' : 78, - 'KEY_KP_PERIOD' : 79, - 'KEY_KP_EQUALS' : 80, - 'KEY_KP_0' : 81, - 'KEY_KP_1' : 82, - 'KEY_KP_2' : 83, - 'KEY_KP_3' : 84, - 'KEY_KP_4' : 85, - 'KEY_KP_5' : 86, - 'KEY_KP_6' : 87, - 'KEY_KP_7' : 88, - 'KEY_KP_8' : 89, - 'KEY_KP_9' : 90, - 'KEY_F1' : 91, - 'KEY_F2' : 92, - 'KEY_F3' : 93, - 'KEY_F4' : 94, - 'KEY_F5' : 95, - 'KEY_F6' : 96, - 'KEY_F7' : 97, - 'KEY_F8' : 98, - 'KEY_F9' : 99, - 'KEY_F10' : 100, - 'KEY_F11' : 101, - 'KEY_F12' : 102, - 'KEY_PRTSCN' : 103, - 'KEY_SCRLK' : 104, - 'KEY_PAUSE' : 105, - 'KEY_SPACE' : 106, -} - -stri = '''gScan_code[11] = 0xB; - gScan_code[13] = 3; - gScan_code[14] = 4; - gScan_code[12] = 2; - gScan_code[15] = 5; - gScan_code[17] = 7; - gScan_code[18] = 8; - gScan_code[16] = 6; - gScan_code[19] = 9; - gScan_code[21] = 0x1E; - gScan_code[22] = 0x30; - gScan_code[20] = 0xA; - gScan_code[23] = 0x2E; - gScan_code[25] = 0x12; - gScan_code[26] = 0x21; - gScan_code[24] = 0x20; - gScan_code[27] = 0x22; - gScan_code[29] = 0x17; - gScan_code[30] = 0x24; - gScan_code[28] = 0x23; - gScan_code[31] = 0x25; - gScan_code[33] = 0x32; - gScan_code[34] = 0x31; - gScan_code[32] = 0x26; - gScan_code[35] = 0x18; - gScan_code[37] = 0x10; - gScan_code[38] = 0x13; - gScan_code[36] = 0x19; - gScan_code[39] = 0x1F; - gScan_code[41] = 0x16; - gScan_code[42] = 0x2F; - gScan_code[40] = 0x14; - gScan_code[43] = 0x11; - gScan_code[44] = 0x2D; - gScan_code[45] = 0x15; - gScan_code[46] = 0x2C; - gScan_code[47] = 0x29; - gScan_code[48] = 0xC; - gScan_code[49] = 0xD; - gScan_code[50] = 0xE; - gScan_code[51] = 0x1C; - gScan_code[52] = 0x9C; - gScan_code[0] = 0x362A; - gScan_code[1] = 0xB838; - gScan_code[2] = 0x9D1D; - gScan_code[3] = 0x9D1D; - gScan_code[4] = 0x3A; - gScan_code[55] = 0x56; - gScan_code[54] = 0x35; - gScan_code[56] = 0x27; - gScan_code[59] = 0x33; - gScan_code[53] = 0xF; - gScan_code[58] = 0x34; - gScan_code[60] = 0x1A; - gScan_code[63] = 1; - gScan_code[57] = 0x28; - gScan_code[62] = 0x2B; - gScan_code[64] = 0xD2; - gScan_code[67] = 0xCF; - gScan_code[61] = 0x1B; - gScan_code[66] = 0xC7; - gScan_code[68] = 0xC9; - gScan_code[71] = 0xCD; - gScan_code[65] = 0xD3; - gScan_code[70] = 0xCB; - gScan_code[72] = 0xC8; - gScan_code[69] = 0xD1; - gScan_code[74] = 0x45; - gScan_code[73] = 0xD0; - gScan_code[75] = 0xB5; - gScan_code[76] = 0x37; - gScan_code[78] = 0x4E; - gScan_code[77] = 0x4A; - gScan_code[80] = 0; - gScan_code[79] = 0x53; - gScan_code[82] = 0x4F; - gScan_code[84] = 0x51; - gScan_code[81] = 0x52; - gScan_code[83] = 0x50; - gScan_code[86] = 0x4C; - gScan_code[88] = 0x47; - gScan_code[85] = 0x4B; - gScan_code[87] = 0x4D; - gScan_code[90] = 0x49; - gScan_code[92] = 0x3C; - gScan_code[89] = 0x48; - gScan_code[91] = 0x3B; - gScan_code[94] = 0x3E; - gScan_code[96] = 0x40; - gScan_code[93] = 0x3D; - gScan_code[95] = 0x3F; - gScan_code[98] = 0x42; - gScan_code[100] = 0x44; - gScan_code[97] = 0x41; - gScan_code[99] = 0x43; - gScan_code[102] = 0x58; - gScan_code[104] = 0x46; - gScan_code[101] = 0x57; - gScan_code[103] = 0; - gScan_code[105] = 0; - gScan_code[106] = 0x39; - gScan_code[5] = 0x36; - gScan_code[6] = 0xB8; - gScan_code[7] = 0x9D; - gScan_code[8] = 0x2A; - gScan_code[9] = 0x38; - gScan_code[10] = 0x1D;''' - -lines = stri.splitlines() -for l in lines: - parts = l.split('=') - # print(parts) - val = parts[1].strip().replace(';', '') - val_int = int(val, 16) - - parts2 = l.split(']') - # print(parts) - parts2[0] = parts2[0].strip() - # i = parts[0].index(']') - val_int2 = int(parts2[0][11:]) - - - code = -1 - keycode = -1 - printed = False - for c in codes: - if codes[c] == val_int: - code = c - - if code == -1: - code = val_int - - for c in keycodes: - if keycodes[c] == val_int2: - - # printed = True - keycode = c - # print(parts[0] + '= ' + str(val_int) + ';') - - if keycode == -1: - keycode = val_int2 - - print('gScan_code[' + str(keycode) + '][0] = ' + str(code) + ';') - - -stri = '''gScan_code[11][0] = SCANCODE_0; - gScan_code[13][0] = SCANCODE_2; - gScan_code[14][0] = SCANCODE_3; - gScan_code[12][0] = SCANCODE_1; - gScan_code[15][0] = SCANCODE_4; - gScan_code[17][0] = SCANCODE_6; - gScan_code[18][0] = SCANCODE_7; - gScan_code[16][0] = SCANCODE_5; - gScan_code[19][0] = SCANCODE_8; - gScan_code[21][0] = SCANCODE_A; - gScan_code[22][0] = SCANCODE_B; - gScan_code[20][0] = SCANCODE_9; - gScan_code[23][0] = SCANCODE_C; - gScan_code[25][0] = SCANCODE_E; - gScan_code[26][0] = SCANCODE_F; - gScan_code[24][0] = SCANCODE_D; - gScan_code[27][0] = SCANCODE_G; - gScan_code[29][0] = SCANCODE_I; - gScan_code[30][0] = SCANCODE_J; - gScan_code[28][0] = SCANCODE_H; - gScan_code[31][0] = SCANCODE_K; - gScan_code[33][0] = SCANCODE_M; - gScan_code[34][0] = SCANCODE_N; - gScan_code[32][0] = SCANCODE_L; - gScan_code[35][0] = SCANCODE_O; - gScan_code[37][0] = SCANCODE_Q; - gScan_code[38][0] = SCANCODE_R; - gScan_code[36][0] = SCANCODE_P; - gScan_code[39][0] = SCANCODE_S; - gScan_code[41][0] = SCANCODE_U; - gScan_code[42][0] = SCANCODE_V; - gScan_code[40][0] = SCANCODE_T; - gScan_code[43][0] = SCANCODE_W; - gScan_code[44][0] = SCANCODE_X; - gScan_code[45][0] = SCANCODE_Y; - gScan_code[46][0] = SCANCODE_Z; - gScan_code[47][0] = SCANCODE_GRAVE; - gScan_code[48][0] = SCANCODE_MINUS; - gScan_code[49][0] = SCANCODE_EQUALS; - gScan_code[50][0] = SCANCODE_BACK; - gScan_code[51][0] = SCANCODE_RETURN; - gScan_code[52][0] = SCANCODE_NUMPADENTER; - gScan_code[0][0] = SCANCODE_LSHIFT; - gScan_code[0][1] = SCANCODE_RSHIFT; - gScan_code[1][0] = SCANCODE_LMENU; - gScan_code[1][1] = SCANCODE_RMENU; - gScan_code[2][0] = SCANCODE_LCONTROL; - gScan_code[2][1] = SCANCODE_RCONTROL; - gScan_code[3][0] = SCANCODE_LCONTROL; - gScan_code[3][1] = SCANCODE_RCONTROL; - gScan_code[4][0] = SCANCODE_CAPITAL; - gScan_code[55][0] = SCANCODE_OEM_102; - gScan_code[54][0] = SCANCODE_SLASH; - gScan_code[56][0] = SCANCODE_SEMICOLON; - gScan_code[59][0] = SCANCODE_COMMA; - gScan_code[53][0] = SCANCODE_TAB; - gScan_code[58][0] = SCANCODE_PERIOD; - gScan_code[60][0] = SCANCODE_LBRACKET; - gScan_code[63][0] = SCANCODE_ESCAPE; - gScan_code[57][0] = SCANCODE_APOSTROPHE; - gScan_code[62][0] = SCANCODE_BACKSLASH; - gScan_code[64][0] = SCANCODE_INSERT; - gScan_code[67][0] = SCANCODE_END; - gScan_code[61][0] = SCANCODE_RBRACKET; - gScan_code[66][0] = SCANCODE_HOME; - gScan_code[68][0] = SCANCODE_PRIOR; - gScan_code[71][0] = SCANCODE_RIGHT; - gScan_code[65][0] = SCANCODE_DELETE; - gScan_code[70][0] = SCANCODE_LEFT; - gScan_code[72][0] = SCANCODE_UP; - gScan_code[69][0] = SCANCODE_NEXT; - gScan_code[74][0] = SCANCODE_NUMLOCK; - gScan_code[73][0] = SCANCODE_DOWN; - gScan_code[75][0] = SCANCODE_DIVIDE; - gScan_code[76][0] = SCANCODE_MULTIPLY; - gScan_code[78][0] = SCANCODE_ADD; - gScan_code[77][0] = SCANCODE_SUBTRACT; - gScan_code[80][0] = 0;''' - -# lines = stri.splitlines() -# for l in lines: -# parts = l.split(']') -# # print(parts) -# parts[0] = parts[0].strip() -# # i = parts[0].index(']') -# val_int = int(parts[0][11:]) -# # print(val_int) - -# printed = False -# for c in keycodes: -# if keycodes[c] == val_int: -# print('gScan_code[' + c + ']' + parts[1] + ']' + parts[2]) -# printed = True -# if not printed: -# print('error!') -# # break diff --git a/shadetable.tga b/shadetable.tga deleted file mode 100644 index 1b4888d6ee3d8ae71a96d8322dfbc3cc8073df5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499218 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 SYyn%q7O(|u0b5`(7Wgk1U8X<) diff --git a/shadetablehack.c b/shadetablehack.c deleted file mode 100644 index af05246b..00000000 --- a/shadetablehack.c +++ /dev/null @@ -1,23 +0,0 @@ -#include -#include -#include -#include -#include - -#include "src/BRSRC13/include/brender/br_types.h" -#include -#include - -int main() { - - FILE* f = fopen("/opt/carma1sp/DATA/SHADETAB/STAAAAAA.TAB", "r+"); - - for (int row = 8; row < 16; row++) { - fseek(f, row * 256 + 52, SEEK_SET); - for (int col = 0; col < 256; col++) { - char c = (char)255; // (char)row + 16; - fwrite(&c, 1, 1, f); - } - } - fclose(f); -} diff --git a/src/DETHRACE/common/netgame.c b/src/DETHRACE/common/netgame.c index 40484e35..85e7f36c 100644 --- a/src/DETHRACE/common/netgame.c +++ b/src/DETHRACE/common/netgame.c @@ -1480,7 +1480,6 @@ void BuyPSPowerup(int pIndex) { } } else { NewTextHeadupSlot(eHeadupSlot_misc, 0, 3000, -4, GetMiscString(kMiscString_ONLY_AVAILABLE_IN_NET_GAMES)); - // NewTextHeadupSlot(eHeadupSlot_misc, 0, 3000, -4, GetMiscString(kMiscString_YOU_ARE_ALREADY_AT_MAX)); } } diff --git a/test.c b/test.c deleted file mode 100644 index ac91edd6..00000000 --- a/test.c +++ /dev/null @@ -1,18 +0,0 @@ -#include -#include -#include -#include -#include -#include - - -int main() { - - int *x = malloc(20); - *x = 1; - printf("x: %d\n", *x); - printf("freeing block...\n"); - free(x); - printf("x: %d\n", *x); - return 0; -} diff --git a/test.out b/test.out deleted file mode 100755 index 964e8febe5f9669b02c3ae63679af9e7d067ecb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12676 zcmeHNU1(fI6rN4exLMomMpWV-+^DOu#H4A9)Q4(Tb7_iA8%+X9K*vpXx4W>}g#Bq7 zp9)dzB9*)dg8JZ_Z{|TEFO{SUO`*`(SBpllvVjyO6^W_1e&5`=-MgFSUFsY-bIzG_ z=FFMz-n&f5xw>`ppZkRH)e9l&z#;G#yM%a8SkQ!c1l$Lfav*ZV9<$##!P#o^RhxIU zn5P{ZNI7JW3{{7y_1xG?+D0jY+^Bt0=HqAbmB8A3Z|}ij;QmM#MZ2LAPUEcClronu zjOXr5)#m%N*~!(B{k^I7ghQcmRZ*;MAF4yetS*ZCsaPuojXwZb7~A#*yFiOEzZF{SM4=ewZu z@f{-3uFc_ioRROz$6zUYBSR7S>WSln&f9|bq3S(x-xn=;W-?QXD5!K$eXwxXK4+%rp=j>_E32R`3C{K>*}&(*(X-)Y{DISZ`L7z~I8Fm;7x zV@KUy=pnF6?KnU4@b||{-1iWeKAyuD^Whl2N-d~oa3+_JPj*;~PH3R`{W z58uQ+VqTOo5SY1*nIE7Q?Gh$Op=|_1yDmV&v8)`w%==0`+VQF5_)@s&- zXNf3n9gg|>(tzV(qEjUb{x^ zX==;R-hW~FvsmL#FT=(qEz#5ZeDBchwx%9six97TtL5@|w!-m% zn9jzn$wE4Bg**4}O9VtNm2uRLD&cVim=n)LJWd7VmAq5(&Up}$%)eJj)OlCkjg=v_ znzI!}S!OT@7z7Lg1_6VBLBJqj5HJWB1PlTO0fT@+;GRUl(*K{`tK~s0U()iPJhVBK zLBJqj5HJWB1PlTO0fT@+z#w1{FbEg~{$~iZJSB#BIgWmAG_Sv&6>}m7 zkDQpwQT0QeM(=n&K`R6c%?eao9hK9$ta@3PV?^S zqZ(&dv0*o(Vb`*prUZrseIXUaUWbR3?esRdy$_I76}4gX+U$?@+MP8v`ysr3_C~PZ un?1$s{brwa?VN>f>+R=~>RbvV7afHQhlJRMDjK#4G;ll>&Bw8e5dQ*pX^?>c diff --git a/tga.c b/tga.c deleted file mode 100644 index 27b49efb..00000000 --- a/tga.c +++ /dev/null @@ -1,200 +0,0 @@ -#include - -#define BYTE_RANGE 256; - -typedef struct { - char id_length; // length of id field (number of bytes - max 255) - char map_type; // colormap field (0 or 1; no map or 256 entry palette) - char image_type; // ( 0 - no image data included - // 1 - uncompressed, color mapped image - // 2 - uncompressed, RGB image - // 3 - uncompressed, black & white image - // 9 - run-length encoded(RLE-lossless compression),color mapped image - // 10 - RLE, RGB image - // 11 - compressed, black & white image ) - - int map_first; // first entry index for color map - int map_length; // total number of entries in color map - char map_entry_size; // number of bits per entry - - int x; // x cooridinate of origin - int y; // y cooridinate of origin - - int width; // width in pixels - int height; // height in pixels - - char bits_per_pixel; // number of bits per pixel - - char misc; // srsly? "scan origin and alpha bits" this example uses scan origin - // honestly, don't know what's going on here. we pass in a hex value - // :shrug_emoji: -} targa_header; - -int little_endianify(int number) { - return number % BYTE_RANGE; -} - -int big_endianify(int number) { - return number / BYTE_RANGE; -} - -////// write header function - -void write_header(targa_header header, FILE* tga) { - fputc(header.id_length, tga); - fputc(header.map_type, tga); - fputc(header.image_type, tga); - - fputc(little_endianify(header.map_first), tga); - fputc(big_endianify(header.map_first), tga); - - fputc(little_endianify(header.map_length), tga); - fputc(big_endianify(header.map_length), tga); - - fputc(header.map_entry_size, tga); - - fputc(little_endianify(header.x), tga); - fputc(big_endianify(header.x), tga); - fputc(little_endianify(header.y), tga); - fputc(big_endianify(header.y), tga); - - fputc(little_endianify(header.width), tga); - fputc(big_endianify(header.width), tga); - fputc(little_endianify(header.height), tga); - fputc(big_endianify(header.height), tga); - - fputc(header.bits_per_pixel, tga); - fputc(header.misc, tga); -} - -int dump_palette(void) { - FILE* tga; - targa_header header; - - int block_size = 10; - - header.id_length = 0; - header.map_type = 1; - header.image_type = 1; // uncompressed RGB image - - header.map_first = 0; - header.map_length = 256; - header.map_entry_size = 24; - - header.x = 0; - header.y = 0; - - int orig_width = 16; - int orig_height = 16; - header.width = orig_width * block_size + orig_width; - header.height = orig_height * block_size + orig_height + 1; - - header.bits_per_pixel = 8; - header.misc = 0x20; // scan from upper left corner - - tga = fopen("palette.tga", "wb"); - write_header(header, tga); - - FILE* palfile = fopen("/opt/carma1sp/DATA/REG/PALETTES/DRRENDER.PAL", "rb"); - char pal[256 * 4]; - fseek(palfile, 64, SEEK_SET); - fread(&pal, 4, 256, palfile); - - for (int i = 0; i < 256; i++) { - fputc(pal[i * 4 + 3], tga); - fputc(pal[i * 4 + 2], tga); - fputc(pal[i * 4 + 1], tga); - printf("%d: %c %c %c\n", i, pal[i * 4 + 1], pal[i * 4 + 2], pal[i * 4 + 3]); - } - - for (int black_line = 0; black_line < header.width; black_line++) { - fputc(0, tga); - } - - for (int row = 0; row < orig_height; row++) { - for (int block_line = 0; block_line < block_size; block_line++) { - for (int col = 0; col < orig_width; col++) { - for (int b = 0; b < block_size; b++) { - fputc(row * orig_width + col, tga); - } - fputc(0, tga); - } - } - for (int black_line = 0; black_line < header.width; black_line++) { - fputc(0, tga); - } - } - fclose(tga); - return 0; -} - -int dump_shadetable(void) { - FILE* tga; - targa_header header; - - int block_size = 10; - - header.id_length = 0; - header.map_type = 1; - header.image_type = 1; // uncompressed RGB image - - header.map_first = 0; - header.map_length = 256; - header.map_entry_size = 24; - - header.x = 0; - header.y = 0; - - int orig_width = 256; - int orig_height = 16; - header.width = orig_width * block_size + orig_width; - header.height = orig_height * block_size + orig_height + 1; - - header.bits_per_pixel = 8; - header.misc = 0x20; // scan from upper left corner - - tga = fopen("shadetable.tga", "wb"); - write_header(header, tga); - - FILE* palfile = fopen("/opt/carma1sp/DATA/REG/PALETTES/DRRENDER.PAL", "rb"); - char pal[256 * 4]; - fseek(palfile, 64, SEEK_SET); - fread(&pal, 4, 256, palfile); - - for (int i = 0; i < 256; i++) { - fputc(pal[i * 4 + 3], tga); - fputc(pal[i * 4 + 2], tga); - fputc(pal[i * 4 + 1], tga); - } - - FILE* stfile = fopen("/opt/carma1sp/DATA/SHADETAB/STAAAAAA.TAB", "rb"); - fseek(stfile, 52, SEEK_SET); - char st[256 * 16]; - fread(&st, 256 * 16, 1, stfile); - - for (int black_line = 0; black_line < header.width; black_line++) { - fputc(0, tga); - } - - for (int row = 0; row < orig_height; row++) { - for (int block_line = 0; block_line < block_size; block_line++) { - for (int col = 0; col < orig_width; col++) { - for (int b = 0; b < block_size; b++) { - fputc(st[row * orig_width + col], tga); - } - fputc(0, tga); - } - } - for (int black_line = 0; black_line < header.width; black_line++) { - fputc(0, tga); - } - } - fclose(tga); - return 0; -} - -int main() { - // dump_palette(); - dump_shadetable(); - return 0; -} diff --git a/tools/annotate.py b/tools/annotate.py deleted file mode 100755 index 6506af59..00000000 --- a/tools/annotate.py +++ /dev/null @@ -1,160 +0,0 @@ -import re -import sys - -SEGMENT_BASES = { - '0001': 0x401000, - '0002': 0x504000, - '0003': 0x507000, -} - -def parse_symbol_table(filename): - symbols = {} - in_symbol_table = False - with open(filename) as f: - for line in f: - # Detect start of symbol table - if 'Address' in line and 'Publics by Value' in line: - in_symbol_table = True - continue - if in_symbol_table: - # Match lines like: 0001:00000000 AdjustSkid - m = re.match(r'\s*([0-9A-Fa-f]{4}):([0-9A-Fa-f]{8})\s+(\w+)', line) - if m: - segment = m.group(1) - offset = int(m.group(2), 16) - name = m.group(3) - base = SEGMENT_BASES.get(segment, 0) - address = offset + base - symbols[name] = (f'0x{address:X}').lower() - return symbols - -if __name__ == '__main__': - if len(sys.argv) != 2: - print(f"Usage: {sys.argv[0]} ") - sys.exit(1) - filename = sys.argv[1] - for name, addr in parse_symbol_table(filename): - print(f'{name}: {addr}') - -def extract_function_name(line): - # Match function definitions at the start of a line (not indented), including those with function pointer arguments - m = re.match(r'^([a-zA-Z_][\w\s\*]*?)\s+([a-zA-Z_]\w*)\s*\((?:[^()]*|\([^()]*\))*\)\s*\{', line) - if m: - return m.group(2) - return None - -def extract_global_var_name(line): - # Match variable declarations at the start of a line (not indented) - # e.g., int foo = 5; or char* gDamage_names[] = { or tU32 gPanel_flic_data_length[2]; or br_matrix34 gSheer_mat = { or void (*gAdd_proc)(tNet_game_details*); - m = re.match(r'^[a-zA-Z_][\w\s\*]*\s+([a-zA-Z_]\w*)\s*(=.*)?;', line) - if m: - return m.group(1) - # Match array initializations like char* gDamage_names[] = { - m = re.match(r'^[a-zA-Z_][\w\s\*]*\s+([a-zA-Z_]\w*)\s*\[.*\]\s*=\s*\{', line) - if m: - return m.group(1) - # Match array declarations like tU32 gPanel_flic_data_length[2]; - m = re.match(r'^[a-zA-Z_][\w\s\*]*\s+([a-zA-Z_]\w*)\s*\[.*\]\s*;', line) - if m: - return m.group(1) - # Match struct/typedef/union initializations like br_matrix34 gSheer_mat = { - m = re.match(r'^[a-zA-Z_][\w\s\*]*\s+([a-zA-Z_]\w*)\s*=\s*\{', line) - if m: - return m.group(1) - # Match function pointer declarations like void (*gAdd_proc)(tNet_game_details*); - m = re.match(r'^[a-zA-Z_][\w\s\*]*\(\*([a-zA-Z_]\w*)\)\s*\([^)]*\)\s*;', line) - if m: - return m.group(1) - return None - -def extract_static_var_name(line): - m = re.match(r'^\s*static\s+(?:[\w\*\s]+\s+)(\w+)\s*(=.*)?;', line) - if m: - return m.group(1) - return None - - -def is_function_def(line): - return extract_function_name(line) is not None - -def is_global_var(line): - return ( - extract_global_var_name(line) is not None - and not is_function_def(line) - and not line.strip().startswith('//') - and not line.strip().startswith('/*') - and line.strip() != '' - ) - -def main(filename): - map_syms = parse_symbol_table("/Users/jeff/Downloads/carma/Carma_Win95.map") - with open(filename) as f: - lines = f.readlines() - - output = [] - brace_level = 0 - last_ignore_seen = 0 - current_function = '' - unmatched = [] - - for i, line in enumerate(lines): - if line == "}\n": - brace_level = 1 - - if line.strip() == '// UNUSED': - last_ignore_seen = i - - prev_line = output[-1] if output else '' - - # Only consider top-level (global) scope - if brace_level == 0: - func_name = extract_function_name(line) - var_name = extract_global_var_name(line) - - if func_name: - current_function = func_name - addr = map_syms.get(func_name) - annotation = f'// FUNCTION: CARM95 {addr}\n' - if not prev_line.strip().startswith('// FUNCTION: CARM95'): - if addr == None and last_ignore_seen != i - 1: - unmatched.append(func_name) - else: - output.append(annotation) - elif var_name: - addr = map_syms.get(var_name) - annotation = f'// GLOBAL: CARM95 {addr}\n' - if not prev_line.strip().startswith('// GLOBAL: CARM95'): - if addr == None and last_ignore_seen != i - 1: - unmatched.append(var_name) - else: - output.append(annotation) - else: - static_var_name = extract_static_var_name(line) - - if static_var_name: - qname = current_function + '_' + static_var_name - addr = map_syms.get(qname) - annotation = f' // GLOBAL: CARM95 {addr}\n' - if '// GLOBAL: CARM95' not in prev_line: - if addr == None and last_ignore_seen != i - 1: - unmatched.append(qname) - else: - output.append(annotation) - - output.append(line) - # Update brace level - brace_level += line.count('{') - line.count('}') - - - with open(filename, 'w') as f: - f.writelines(output) - - print("Unmatched in", filename) - print(unmatched) - -if __name__ == '__main__': - if len(sys.argv) != 2: - print("Usage: python annotate_c_globals.py ") - sys.exit(1) - - main(sys.argv[1])