THE SEUCK VAULT
Menus | Tips | Archive | Links | Contact

MORE TIPS FROM RICHARD BAYLISS


CHECK OUT THE SEUCK BUSTER FROM RICHARD BAYLISS


TIP #1

Converting SEUCK score plot to screen chars using ML:

Looking at the memory map I noticed how the SEUCK score codes work. So I did a little experiment. Jon Wells pointed out in The Secret of SEUCKcess where to find the data that is being used for the player scores and it works as well.

Note: this will only work on games that have not been altered or had the Kit removed from memory.

Score for player 1 is at $5EA3-$5EA8 and the score for player 2 is at $5EA9-$5EAE.

Say you were doing something like a high-score table in assembly language or you just wanted to do the "game over" and show the result of what the player did score, then you would need to convert all 6 chars of the score data into screen char values. The general routine uses chars @ABCDEFGHI, which represents the numbers that were used in the game's score.

@ = 0, A = 1, B = 2, C = 3, D = 4, E = 5, F = 6, G = 7, H = 8, i = 9

Now then, if you wanted to turn the score data into screen code then you could use a M/C monitor or (preferably an assembler or cross assembler) to do the job nicely.

 LDX #$00
 CONVSC LDA $5EA3,X ; For player 1, use $5EA9 for player 2
 ADC #$30
 STA $0400,X ;(plot to screen)
 INX
 CPX #$06 ; READ 6 CHARS BEFORE END JOB!
 BNE CONVSC
 RTS

The screen shot below is for those who are using an Action Replay cartridge M/C monitor.

The last JMP is an infinite loop

Andrew: This example code simply plots the score value into the top left corner of the screen assuming it is at $0400.

Reset using a cartridge like Action Replay and execute where you placed the code. (In the example above, this would be $6600). Now that you know of the @ABCDEFGHI, you should be aware that if the score value @@AGF@ were used, it would produce the score as 001750 at the top left of the screen, just like the screen below.

At the top left as noted before


TIP #2

Multi-colour sprite score

In a few games which I had found on a Binary Zone PD games disk, there were some SEUCK games, which had the score and lives displayed in multi-colour instead of hi-resolution. This was originally discovered with Halloween Police. I wondered to myself how was that done? Would a lot of programming be required? The answer to that is in fact, NO because all it takes to make a multi-colour score is a simple little poke, and here it is:

 POKE 17765,255

or, in machine code:

 A 4565 LDA #$FF

The disadvantage to this is that you will have to save the SEUCK font data from $F400-$F800 and load it into a font editor and make your multi-colour score data, then load the new multi-colour font to $F400 again.


TIP #3

Rolling chars to make a background animation

Assuming you like to make your SEUCK games more interesting, like add some enhancements to the background of your game. SEUCK does not support options to make animated backgrounds. A pity really, because it would make things slightly more interesting for the gamer.

When I was enhancing Imaginator with a new front end and also music, etc. I thought that the level's background would look really cool if I added a waterfall type of effect. The simple way around it for me was to animate the chars that used the water, by scrolling each char and after the end of the chars, wrap all over again. Here is how I did it.

First of all, I used chars 160 to 163. Knowing that the SEUCK's own background charset data lies at $f800-$ffff. It was time to calculate values. Each 1x1 char is #$08 bytes long. So I had to figure out where char 160 lies (160 is not hexadecimal in SEUCK) so to calculate where the char lies:

The SEUCK background editor with the waterfall characters

CHAR NUMBER * 8 + CHARSET MEMORY START ($F800)

160 * 8 + $F800 = $FD00

That is where char 160 lies in the SEUCK game. So now, we shall add some code to animate the chars.

In the game Imaginator V3 this is the M/C source of how to animate the waterfall chars.

First part of the animation code

Second part of the animation code

Now here it is as assmembly mode (for those using a cross assembler or any other assembler). Don't forget to change value $4503 to JSR $6580 (or where you are placing additional code). At $6580 add JSR $6600 and then at $6583 JSR $6643 then at $6586 add RTS.


 ;PLACE CODE AT $6600 (OR WHERE ELSE YOU WANT TO PUT IT)
 ANIMCHAR INC $02 ; DELAY COUNTER
 LDA $02 ; CHECK DELAY
 CMP #$04 ; VALUE OF DELAY = 4?
 BEQ DOANIM
 RTS ; ELSE TERMINATE PROCESS
 DOANIM LDA #$00 ;ZERO COUNTER
 STA $02
 LDA $FD07 ; LAST BYTE OF CHAR 160
 STA $FD00 ; STORE TO FIRST BYTE OF CHAR 160
 LDA $FD0F ; LAST BYTE OF CHAR 161
 STA $FD08 ; STORE TO FIRST BYTE OF CHAR 161
 LDA $FD17 ; LAST BYTE OF CHAR 162
 STA $FD10 ; STORE TO FIRST BYTE OF CHAR 162
 LDA $FD1F ; LAST BYTE OF CHAR 163
 STA $FD18 ; STORE TO FIRST BYTE OF CHAR 163
 LDX #$07
 WRAPCHRS LDA $FCFF,X ; PUSH BYTE FORWARD
 STA $FD00,X ; TO NEXT BYTE
 LDA $FD07,X
 STA $FD08,X
 LDA $FD0F,X
 STA $FD10,X
 LDA $FD17,X
 STA $FD18,X
 DEX
 BNE WRAPCHRS
 RTS
 JSR $5C94 ; Sound effects
 RTS


Here's the result:

The animating waterfall in Imaginator



Back to the top