User Tools

Site Tools


notes:comporg:spring2025:projects:mtb1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
notes:comporg:spring2025:projects:mtb1 [2025/02/19 22:41] – [Selecting joystick] bdildinenotes:comporg:spring2025:projects:mtb1 [2025/02/20 03:33] (current) – [How to check if our sprite has reached a bound] tkastne1
Line 67: Line 67:
  
 ====Reading joystick value==== ====Reading joystick value====
 +Reading the joystick values is also similar to the C version, the C version is the following:
 +<code>
 +variableName = gamepad_left();
 +</code>
 +Where variableName is a integer variable
  
 +In assembly we use registers instead of variables to store the returned value
 +<code>
 +in R0, INP_GamepadLeft
 +</code>
 +Reading the other directions can be done by using up/down/right instead of left
 ====translating read joystick value into X and Y==== ====translating read joystick value into X and Y====
 +The value returned by the gamepad is the number of frames it has been in that state
  
 +This value can be converted into a boolean with ige:
 +<code>
 +ige R0, 0
 +</code>
 +Where R0 is a joystick direction value
 +
 +After you have the boolean version, you can either use a conditional jump to a label that does whatever you want when a certain direction is pressed, or directly add/subtract the value to the x/y position
 +<code>
 +jt R0 _label
 +</code>
 +or
 +<code>
 +iadd R1, R0
 +</code>
 +Where R1 is a x/y position
 =====Playfield bounds checking===== =====Playfield bounds checking=====
  
Line 75: Line 101:
  
 ====How to check if our sprite has reached a bound==== ====How to check if our sprite has reached a bound====
 +Checking the bounds of the screen can be done using greater than/less than instructions
  
 +Remember that instructions overwrite the register
 +<code>
 +mov R0, R1
 +ilt R0, YMIN
 +jt  R0, _upper_bound
 +</code>
 +and
 +<code>
 +mov R0, R1
 +igt R0, YMAX
 +jt  R0, _lower_bound
 +</code>
 +Where R1 is a the y position and YMIN/YMAX are the min and max bounds
 ====How to limit our sprite from leaving the playfield==== ====How to limit our sprite from leaving the playfield====
  
 ====How to cause our sprite to wrap-around on the playfield==== ====How to cause our sprite to wrap-around on the playfield====
  
notes/comporg/spring2025/projects/mtb1.1740004877.txt.gz · Last modified: 2025/02/19 22:41 by bdildine