milestone 2 complete, picking up items

This commit is contained in:
2025-04-07 03:45:01 -04:00
parent 0d0c5708f6
commit f5fcc44780
+76 -7
View File
@@ -61,8 +61,10 @@ main:
li $s2, 0 # s2 is the sub pixel y position, mod4 li $s2, 0 # s2 is the sub pixel y position, mod4
li $s3, 0 # s3 is the x velocity li $s3, 0 # s3 is the x velocity
li $s5, 0 # s5 stores subpixel y velocity li $s5, 0 # s5 stores subpixel y velocity
li $s6, 0x80 # initial fuel = 8*16 / 16*16 - 1
jal cBH # clear behind jal cBH # clear behind
jal lev0 jal lev0
jal dbar # draw bar ui
mainlo: # Main Game loop mainlo: # Main Game loop
@@ -71,13 +73,14 @@ mainlo: # Main Game loop
lw $t1, 0($t0) lw $t1, 0($t0)
beq $t1, 1, inp # Apply input beq $t1, 1, inp # Apply input
main1: # Apply gravity to velocity if not landed main1: # Apply gravity to velocity if not landed
li $t9, 0xff0000
addi $s5, $s5, 1 # Add gravity to vertical velocity addi $s5, $s5, 1 # Add gravity to vertical velocity
jal land jal land
beqz $v0, main2 # if not landed: skip beqz $v0, main2 # if not landed: skip
blez $s5, main2 # if ascending: skip blez $s5, main2 # if ascending: skip
li $s3, 0 li $s3, 0
li $s5, 0 li $s5, 0
bgtz $s6, main2 # if fuel remains: skip
j main # yer done - no fuel
main2: # Draw changes main2: # Draw changes
jal mship jal mship
@@ -96,6 +99,7 @@ inp: # Handle input
lw $t0, 4($t0) # t0 = ascii code of input lw $t0, 4($t0) # t0 = ascii code of input
beq $t0, 114, inpr beq $t0, 114, inpr
beq $t0, 113, inpq beq $t0, 113, inpq
blez $s6, main1 # no options if no fuel
beq $t0, 97, inpa beq $t0, 97, inpa
beq $t0, 119, inpw beq $t0, 119, inpw
beq $t0, 100, inpd beq $t0, 100, inpd
@@ -104,15 +108,18 @@ inp: # Handle input
inpa: # accelerate left is pushed inpa: # accelerate left is pushed
addi $s3, $s3, -4 addi $s3, $s3, -4
j main1 addi $s6, $s6, -4
j ubar
inpw: # increase thrust is pushed inpw: # increase thrust is pushed
addi $s5, $s5, -32 addi $s5, $s5, -32
j main1 addi $s6, $s6, -8
j ubar
inpd: # accelerate right is pushed inpd: # accelerate right is pushed
addi $s3, $s3, 4 addi $s3, $s3, 4
j main1 addi $s6, $s6, -4
j ubar
inpr:# reset if r if pressed inpr:# reset if r if pressed
j main j main
@@ -172,6 +179,55 @@ ssl: add $t1, $t0, $a0
j ssl j ssl
ss0: jr $ra ss0: jr $ra
ubar: # update the fuel bar
li $t7, 0 # partial square color
li $t8, 0x0 # t8 = black
li $t9, 0xff8800 # t9 = orange
add $t0, $s0, 20476 # bottom of guage
li $t2, 0 # counter
ble $s6, 0x10, ubarl1
la $t1, ($s6) # t1 = fuel
ubarlo: sw $t9, 0($t0) # Draw the orange
addi $t0, $t0, -512
addi $t1, $t1, -0x10
addi $t2, $t2, 1
bge $t1, 0x10, ubarlo
ubarl1: blez $t1, ubarla # Draw partial square
addi $t1, $t1, -0x01
addi $t7, $t7, 0x110600
j ubarl1
ubarla: sw $t7, 0($t0) # Draw black
addi $t0, $t0, -512
addi $t2, $t2, 1
ubarl2: sw $t8, 0($t0)
addi $t0, $t0, -512
addi $t2, $t2, 1
bne $t2, 16, ubarl2
ubare: j main1
dbar: li $t7, 0x0 # t7 = black
li $t8, 0x828282 # t8 = dark grey
li $t9, 0xff8800 # t9 = orange
addi $t0, $s0, 12280 # t0 = base address
sw $t8, 0($t0)
sw $t8, 4($t0)
addi $t0, $t0, 512
li $t1, 0 # t1 = counter
dbar1: sw $t8, 0($t0)
sw $t7, 4($t0)
addi $t0, $t0, 512
addi $t1, $t1, 1
bne $t1, 16, dbar1
sw $t8, 0($t0)
sw $t8, 4($t0)
sw $t9, -2048($t0)
sw $t9, -4096($t0)
sw $t9, -6144($t0)
jr $ra
dsp: # Draw small platform. Topleft address is stored in $a0. $a0 is not modified dsp: # Draw small platform. Topleft address is stored in $a0. $a0 is not modified
li $t8, 0xa4b0c8 # t8 stores blue-grey li $t8, 0xa4b0c8 # t8 stores blue-grey
@@ -407,9 +463,8 @@ dland0: sw $t9 0($t0) # Draw 6 more horizontal levels
j dland0 j dland0
dland1: jr $ra dland1: jr $ra
beq $t2, 0xa4b0c8, mshipc # if color is platform, note it as a colision
beq $t2, 0x7e848f, mshipc
beq $t2, 0xdf9213, mshipc
land: # Return 1 in v0 iff spaceship is landed. Checks $s1 for the ships position. Landed iff neither black or white under both feet land: # Return 1 in v0 iff spaceship is landed. Checks $s1 for the ships position. Landed iff neither black or white under both feet
lw $t0, 2048($s1) # Load the pixel under left leg lw $t0, 2048($s1) # Load the pixel under left leg
beq $t0, 0xa4b0c8, landtr# Can land on platform or bronze beq $t0, 0xa4b0c8, landtr# Can land on platform or bronze
@@ -490,6 +545,7 @@ mship2: lw $t1, 0($t0) # t1 = S[i]
beq $t2, 0xa4b0c8, mshipc # if color is platform, note it as a colision beq $t2, 0xa4b0c8, mshipc # if color is platform, note it as a colision
beq $t2, 0x7e848f, mshipc beq $t2, 0x7e848f, mshipc
beq $t2, 0xdf9213, mshipc beq $t2, 0xdf9213, mshipc
beq $t2, 0xfd2f2e, mshipf # if fuel tank, collect fuel
j mship3 j mship3
mshipc: addi $s1, $s1, -512 # if collision on feet is detected, raise ship by 1 and resave to draw mshipc: addi $s1, $s1, -512 # if collision on feet is detected, raise ship by 1 and resave to draw
bgt $t3, 5, mships # skip move up if on the feet bgt $t3, 5, mships # skip move up if on the feet
@@ -511,6 +567,19 @@ mship4: addi $sp, $sp, 4
lw $ra, -4($sp) lw $ra, -4($sp)
jr $ra jr $ra
mshipf: addi $s6, $s6, 0x80 # collect fuel
andi $s6, $s6, 0xFF # cap fuel
addi $t0, $s0, 13964 # fuel location in l1
li $t3, 0 # counter
li $t4, 0x0
mshipf1:sw $t4, 0($t0)
sw $t4, 4($t0)
sw $t4, 8($t0)
sw $t4, 12($t0)
addi $t3, $t3, 1
addi $t0, $t0, 512
bne $t3, 5, mshipf1
j mships