The game source compiles with the free version of TNIasm.

just include in the same folder "tniasm.exe". Download it from tni.nl website (v0.45).

and run the MAKE.BAT file to compile and generate "Super.com" file.


-------------------------------------------------------------------------------------------

Just run Super.com.
The code fully works 100% out of the box, and hasn't anything to be complete.

But maybe you want to change some properties, like characters properties.


---------------------------------------------------------------------------------------------


Open the Game.asm file with the notepad

and use the FIND function for:



.ClassEnergies:             -> for changing the initial energy given to characters. Don't change lifts and boxes initial energy.
.AttackAreaData:            -> this define the area for the attack box of the hand weapon.
                               If you change the handweapons sprite patterns 33 up to 38,
                               to other handweapon size, you must adjust the attack area aswell.

attackarea are defined with 3 bytes:
              offset TOP / HEIGHT / WIDTH.
              all values are in (pixels << 4). So, $10 = 1 pixel, $20 = 2 pixels, and so on.

In the attackarea specification is not set the LEFT offset, because it is hardcoded,
the attackarea start on the fourth column of the weapon sprite pattern.

IMPORTANT the handweapon must be draw facing right.
And the first three columns of the pattern are overlapped with the player sprite.
So, the first three columns of the pattern are reserved for the weapon hand grip.
And for showing that the hand grip is being grabbed by the player right hand,
the weapon handgrip pattern must have few transparent pixels on it.



ATTACK POWER DATA.          -> there is one instruction "ld hl, nnnn" defining the attack power for each handweapon, including the bare hands (which normally, attack power = 0).


.WalkSpeedData:             -> for adjust the player walk speed (the player has a slow walk speed, and a fast walk speed for each shoes). Don't recommend to abuse of this.


Adjust jump force for all shoes              -> there is a add a, 15    <--- this affect the jump force for all shoes include the bare feet.


call FramesPerSecondControl         -> Before of this instruction is a "ld b, n", the number define how many VDP VBLANK per each game frame.
It is normally set in 3 vdp's vblank per each game frame, but if you do the game heavier by mapping lots of characters, maybe you want to setup 4 or 5 vdp's frames per game frame, and increase the player's walk speed.
The first two "call FramesPerSecondControl" are for normal gameplay frame control, and in monster room gameplay control. The others are not relevant.



ld (AttackPower), hl                  ->   This instruction defines the attack power which characters hit or secondary weapons hit.
                                      ->   before changing its "ld hl, nnnn" assignament, watch in which context it is being used,
 scroll up to see the routine name like "DogsClass:", so you know that it belongs to the dog character.


Just before the attack power definition, is the attack area definition, it is a lot more complicated and don't recommend to change that.
But basically, the attack event needs to know HOW MUCH HARD TO HIT (AttackPower), and WHERE TO HIT, Where to hit, is always offsets of the character coordinates, except the thunder, that covers the whole screen, so it offsets the screen location.

Basically it must know, TOP/HEIGHT LEFT/WIDTH of the attacked area.

and tipically is a code like the follow:


			ld l, (ix + Sprite.MapOy)		; Build an attack zone.
			ld h, (ix + Sprite.MapTy)
			ld bc, $0010
			add hl, bc
			ld c, l
			ld b, h
			ld de, $0050
			exx

			ld l, (ix + Sprite.MapOx)
			ld h, (ix + Sprite.MapTx)
			ld bc, $00D0
			add hl, bc				; The attack zone is the last 3 pixels of the pattern.
			ld c, l
			ld b, h
			ld de, $0030



It reads the characters coordinates, and offset from them some pixels....
remember that it is "pixels << 4", in the example, so $0010 = 1 pixel down, $00D0 = 13 pixels to the right, for TOP/LEFT.
and $0050 is the HEIGHT (5 pixels), and $0030 is the width (3 pixels).

That is the relative area where this character attack, if the pattern is changed to graphically attack in other place, it must be adjust.



---------------------------------------------------------------------------------------------------------


To change how many points per kill, find this.



.Points:                                    -> there is how many points per character death, it is 16bits number in this table, so no abuse of it, and the score register is 24bits, so no abuse of it.





