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:36] – [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 54: Line 54:
 Selecting a joystick is very similar to the C process and only takes one command. Selecting a joystick is very similar to the C process and only takes one command.
 In C, we use: In C, we use:
-''select_gamepad( gamepadID );''+<code> 
 +select_gamepad( gamepadID ); 
 +</code>
 Where gamepadID is the value of the gamepad you wish to select. Where gamepadID is the value of the gamepad you wish to select.
  
 In assembly we use: In assembly we use:
-''out INP_SelectedGamepad, gamepadID''+<code> 
 +out INP_SelectedGamepad, gamepadID 
 +</code>
 Where again, gamepadID is the gamepad we wish the use. 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 71: 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.1740004589.txt.gz · Last modified: 2025/02/19 22:36 by bdildine