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/17 18:50] – [Selecting Region] cgrant9notes:comporg:spring2025:projects:mtb1 [2025/02/20 03:33] (current) – [How to check if our sprite has reached a bound] tkastne1
Line 52: Line 52:
  
 ====Selecting joystick==== ====Selecting joystick====
 +Selecting a joystick is very similar to the C process and only takes one command.
 +In C, we use:
 +<code>
 +select_gamepad( gamepadID );
 +</code>
 +Where gamepadID is the value of the gamepad you wish to select.
 +
 +In assembly we use:
 +<code>
 +out INP_SelectedGamepad, gamepadID
 +</code>
 +Where again, gamepadID is the gamepad we wish the use.
 +
  
 ====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 62: 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.1739818234.txt.gz · Last modified: 2025/02/17 18:50 by cgrant9