From 95f99927f41c21f6fec8dcb26aebc98ac2b5254e Mon Sep 17 00:00:00 2001 From: Jeremy Janella Date: Fri, 4 Apr 2025 23:08:06 -0400 Subject: [PATCH] added a landing pad and fuel barrel. constructed the level. Milestone 1 complete --- game.asm | 106 +++++++++++++++++++++++++++++++++++++++------------ graphics.pxo | Bin 991 -> 1019 bytes 2 files changed, 81 insertions(+), 25 deletions(-) diff --git a/game.asm b/game.asm index 007d1eb..37fd2a3 100644 --- a/game.asm +++ b/game.asm @@ -48,36 +48,44 @@ .global main main: - li $t0, BASE_ADDRESS # $t0 stores the base address for display - li $a0, BASE_ADDRESS + li $s0, BASE_ADDRESS # $s0 stores the base address for display + jal lev0 - jal ss - - jal dship - addi $a0, $a0, 1024 - jal dplm - addi $a0, $a0, -1024 - - addi $a0, $a0, 40 - jal dsp - - addi $a0, $a0, 64 - jal dmp - - addi $a0, $a0, 80 - jal dlp - - addi $a0, $zero, BASE_ADDRESS - addi $a0, $a0, 8192 - jal dtur - - addi $a0, $a0, 80 - jal dbul li $v0, 10 # terminate the program gracefully syscall - + +lev0: # Prepare level 0 + + addi $sp, $sp -4 # Save the address to return to main + sw $ra, 0($sp) + + la $a0, ($s0) + jal ss # Clear the screen + addi $a0, $s0, 27900 # Draw the large platform + jal dlp + addi $a0, $s0, 27088 # Draw a landing pad on the large platform + jal dland + addi $a0, $s0, 16512 # Draw small platform 1 + jal dsp + addi $a0, $s0, 13964 # Draw a fuel barell on small platform 1 + jal dfuel + addi $a0, $s0, 22940 # Draw small platform 2 + jal dsp + addi $a0, $s0, 21400 # Draw an enemy on small platform 2 + jal dtur + addi $a0, $s0, 30220 # Draw medium platform + jal dmp + + addi $s1, $s0, 27160 # s1 stores the players position. 27984 is spawn + la $a0 ($s1) + jal dship + + + lw $t0, 0($sp) + addi $sp, $sp, 4 # Return to main from the stack + jr $t0 ss: # Set the screen @@ -277,6 +285,54 @@ dbul: # Draw a bullet. Topleft address is stored in $a0. $a0 is not modified sw $t9, 8($a0) jr $ra + +dfuel: # Draw a fuel barrel. Topleft address is stored in $a0. $a0 is not modified + li $t8 0xfd2f2e # t8 stores red + li $t9 0xff8800 # t9 stores orange + + sw $t8 0($a0) # Level 1 + sw $t8 4($a0) + sw $t8 8($a0) + sw $t8 12($a0) + sw $t8 512($a0) # Level 2 + sw $t8 516($a0) + sw $t8 520($a0) + sw $t8 524($a0) + sw $t9 1024($a0) # Level 3 + sw $t9 1028($a0) + sw $t9 1032($a0) + sw $t9 1036($a0) + sw $t9 1536($a0) # Level 4 + sw $t9 1540($a0) + sw $t9 1544($a0) + sw $t9 1548($a0) + sw $t8 2048($a0) # Level 5 + sw $t8 2052($a0) + sw $t8 2056($a0) + sw $t8 2060($a0) + + jr $ra + +dland: # Draw a landing pad. Topleft address is stored in $a0. $a0 is not modified + li $t8, 0x828282 # t8 stores dark grey + li $t9, 0xa4a4a4 # t9 stores light grey + + sw $t8, 0($a0) # Draw the 6 edge pixels + sw $t9, 4($a0) + sw $t8, 516($a0) + sw $t9, 32($a0) + sw $t8, 36($a0) + sw $t8, 544($a0) + + addi $t0, $a0, 8 + li $t1 0 +dland0: sw $t9 0($t0) # Draw 6 more horizontal levels + sw $t9 512($t0) + beq $t1, 6, dland1 + addi $t1, $t1, 1 + addi $t0, $t0, 4 + j dland0 +dland1: jr $ra diff --git a/graphics.pxo b/graphics.pxo index 4e67702afb97b3fa92d113c8b34628e4db9b6ad8..a6c1b569c3a202fdae810841a5f6f7f17baf6207 100644 GIT binary patch delta 401 zcmcc5{+pdAz?+#xgn@yBgTZ3kMxK5~L5poIQO245Dr}4l3=9nn4APU&Gl|#dBvz&t z#T&l8anSd$fe71!HwWZ4D7JSno2#UqVCXq0wxU^KyWS>|HAfVWE?fB1?q%$vCze(J zgRgFT&A{;Bv;mJ|Sl!=`FI9Q+-yiMze&*}nlb^Gz|8ILCQe(Qeq|7DMS4i}fNTYJuYZ~U6<{ioMPPOkrxHzVt; zX+^DvVD3#%wkSj^$)w-h1XV2`(*Y0lFRxl?Jqi@!);PZ{#s$0xe@7HSN zN-;24yxygEL~7moYqu}d{uj}{SG@9l{k;9#zVEfYzjxWGeJ0F1jo)8C{_Feqr?0Nv z{Pjd~#l)W%mcH?}ymn)|iF9&x%`2WO7T>SDf2X~qK6Lm0DaW3r_l17`b88##;XjX~ z&e~SQ?p*VfpW*ZNcs-{ZCd<37pRbdbdp+yV