|
In this section we offer some articles, how to program some specific parts of a game or the TI92!
We will add articles, so revisit this section!
Access to a structure
Do you want to include a highscore into your program? No problem, because A68K can do the work for us! How?, we'll explain it here!
What is a structure
A structure is a collection of variables, a logical block! For example, a high score can be a structure. It contains a name and the number of points, so how does this structure look? We suggest you to use the following type:
{structurename}.{variable/membername} equ {structureposition}
For example our highscore would look like this
highscore.pname equ 0 ; Pointer to the name
highscore.wscore equ 4 ; Word, Number of points
sizeof_highscore equ 6 ; Size of the highscore structure
|
To calculate the position of your structure, the first index is zero, the next will be the size of the first index, the third [size of first index + size of the second index], ... The last name (sizeof_) should be the size of the structure
Example of a bigger structure
lemming.x_position equ 0 ; X Position, Word
lemming.y_position equ 2 ; Y Position, Word
lemming.work equ 4 ; Current work, Word
lemming.subroutine equ 6 ; Lemming function, Pointer
lemming.time equ 10 ; counter, Word
sizeof_lemming equ 12
|
Access of a structure in assembler
Only problem is the access. You should use pointers to a structure (addressregister), because then you can simply add the value of the position to it. It sounds difficult, but please look at the following example:
; Simple access example
lemming.x_position equ 0 ; X Position, Word
lemming.y_position equ 2 ; Y Position, Word
lemming.work equ 4 ; Current work, Word
lemming.subroutine equ 6 ; Lemming function, Pointer
lemming.time equ 10 ; counter, Word
sizeof_lemming equ 12
; ProcessLemming
; Input a0 pointer
ProcessLemming:
move.w lemming.x_position(a0),d0 ; Load x position
move.w lemming.y_position(a0),d1 ; Load y position
move.l lemming.subroutine(a0),a1 ; Pointer to the routine
jsr (a1) ; Call the routine
rts
_main:
lea LemmingStructure(PC),a0
bsr ProcessLemming
rts
; Space for 5 lemmings!
LemmingStructure ds.b 5*sizeof_lemming
|
And that is all
|
|
|