| |
Credits :
Code | .... | zscs of Excess, The Apace Software |
Music | .... | Vincenzo of Lethargy, Molecoola, Rebels, SIDRIP Alliance, Singular, STARZ |
Graphics | .... | zscs of Excess, The Apace Software |
Idea | .... | zscs of Excess, The Apace Software |
Text | .... | zscs of Excess, The Apace Software |
Charset | .... | zscs of Excess, The Apace Software |
SIDs used in this release :
Download :
Look for downloads on external sites:
Pokefinder.org
Production Info Submitted by zscs on 16 August 2023
As mentioned, 100% coded in S-MON $c000. Here you can find my notes - if you would like to see the details in e.g. a monitor. :)
ln# d012 badl*: scr: col: *$d011=$1b /badline
-----------------------------------------------------
00 $31 $33 $0400 $d800
01 $39 $3b $0428 $d828
02 $41 $43 $0450 $d850
03 $49 $4b $0478 $d878
04 $51 $53 $04a0 $d8a0 * 1 logo: upper part
05 $59 $5b $04c8 $d8c8 * 2
06 $61 $63 $04f0 $d8f0 * 3
07 $69 $6b $0518 $d918 * 4 + $d020 rasters
08 $71 $73 $0540 $d940 * 5 + $d020 rasters
09 $79 $7b $0568 $d968 - empty line/placeholder-
10 $81 $83 $0590 $d990 + 3x4 scroll line 1
11 $89 $8b $05b8 $d9b8 + 3x4 scroll line 2
12 $91 $93 $05e0 $d9e0 + 3x4 scroll line 3
13 $99 $9b $0608 $da08 + 3x4 scroll line 4
14 $a1 $a3 $0630 $da30 - empty line/placeholder-
15 $a9 $ab $0658 $da58 * 1 logo: mirrored + $d020 rasters
16 $b1 $b3 $0680 $da80 * 2 logo: mirrored + $d020 rasters
17 $b9 $bb $06a8 $daa8 * 3 logo: mirrored
18 $c1 $c3 $06d0 $dad0 * 4 logo: mirrored
19 $c9 $cb $06f8 $daf8 * 5 logo: mirrored
20 $d1 $d3 $0720 $db20 - empty line/placeholder-
21 $d9 $db $0748 $db48 - empty line/placeholder-
22 $e1 $e3 $0770 $db70 + 8x5pixel charset + sprites background?
23 $e9 $eb $0798 $db98 + 8x5pixel charset + sprites background?
24 $f1 $f3 $07c0 $dbc0 - empty line/placeholder-
----------------------
c $4000 - start
c $4200 - main routine / raster interrupts
c $4300 - scroll fade-out sprite#0 init / $07f8, + sprite init for all 8 sprites
c $4400 - 3x4 scroller routine
c $4600 - upper logo d020 rasters routine
d $46e0 - 46ea raster colours (upper)
c $4700 - scroller part init on the screen
c $4760 - background sprite init (scroll, hires layer), sprite#1-7 colours: $4758-475e
c $4800 - lower logo d020 rasters routine
d $48e0 - 48f2 raster colours (lower)
c $4900 - all sprites OFF, sprite Y-positions to $00 (cmp $d012 = $a4)
c $4940 - cmp $d012=$8c: sprite Y-pos: $99
c $4980 - scroll hires background layer colours: cycle colours high (from $5a00)
c $49a0 - scroll hires background layer colours: cycle colours low (from $5e00)
c $4a00 - scroll sprite bg layer 1 char left (16 bit, because X-expanded!)
c $4c00 - 8-pixel movement for logos (logo swing)
c $4d00 - DYCP routine: draw
d $5000 - 3x4 charset tiles (12 byte / char, linear order)
c $5280 - 52be ( two routines to generate temporary data. Used once only )
d $52c0 - 52ff ( chars, 0-63, not used, temporary data )
d $5300 - 533f 3x4 charset vector: ascii absolute -> relative 0-46
d $5340 - 536c ( available chars in the 3x4 charset. temporary/not used )
d $5380 - 3x4 charset tile vector: low byte ($5000-)
d $53c0 - 3x4 charset tile vector: high byte ($5000-)
d $5400 - 3x4 charset colour attributes / char (refers from tile vector data!)
d $5480 - 54a0 3x4 charset: tile width (1, 2 or 3 chars)
d $5500 - 3x4 scrolltext ($ff - end, $1e-speed, next byte is and#07. if spd=0, delay#40)
d $5a00 - 7-sprite background colour cycle (colours), 3x4 scroll upper char
d $5b00 - sprite bg layer bits (left/right 4-bit as well, must be masked when paste!)
d $5c00 - sprite bg layer vector: $5b00 + [value] at Y, where Y is pos of char
d $5d00 - logo colour conversion table, $00: original, +$20: darker, +$40: darkest
d $5e00 - 7-sprite background colour cycle (colours), 3x4 scroll lower char
d $2000 - 3x4 charset char data
d $2500 - 4000 bitmap logo data (chars + colours in empty areas, inside this)
d $2300 - 23c8 chars - upper logo
d $2400 - 24c8 chars - lower logo
d $2c00 - 2cc8 colours - upper logo
d $2d00 - 2dc8 colours - lower logo
d $3000 - 3200 8x5-pixel complete charset
d $2e00 - 2320 colour transition: black -> white (red variants)
d $2e20 - 2e40 colour transition: white -> black (red variants)
d $2e40 - 2e60 colour transition: black -> grey (grey colours)
d $2e60 - 2e80 colour transition: grey -> black (grey colours)
d $3200 - 3240 8-pixel wide sinus (0-7 values), 64/$40 values
c $3240 - 3280 upper/lower logo swing move + delay logic
c $3900 - logo colour draw 1 char / frame main logic (under constr.!!!)
...del! c $3980 - logo colour draw upper: 1 char / frame (original logic)
...del! c $39c0 - logo colour draw lower: 1 char / frame (original logic)
d $39c0 - 39e8 mask, where the logo colour data can be changed (0-off, 1-change)
c $3a00 d8xx colour map table conversion
c $3a10 04xx char coloup table conversion, low 4-bit, high 4-bit as well
c $3b00 upper logo part: colour draw, where Y=$00,$20,$40,$80 (see below)
c $3b80 lower logo part: colour draw, where Y=$00,$20,$40,$80 (see below)
c $3d00 [ temporary/one-time code: convert logo colour tables-> $6000)
c $3e00 logo upper / lower colour cycling, main routine
c $3f00 upper logo colour transition: speed optimized code (2nd version)
c $3f80 lower logo colour transition: speed optimized code (2nd version)
d $6000 -6800 logo colour tables for speed code (see below for more info)
v $2d 3x4 scroller delay (0: no delay, otherwise $curr_val - 1 / frame)
v $2e 3x4 scroller shift (0-7)
v $2f - $30 3x4 scroll text pointer (default: $5500)
v $31 - $32 3x4 scroll: current char's tile data address
v $33 - $34 logo move, 8-pixel, left-right
v $35 - $36 ?? scroller pointers
v $37 - $40 colour convert buffer
v $45 - $46 temporary, DYCP char data copy
v $47 - $48 DYCP text pointers
v $39fe - 39ff upper/lower logo colour transitions' positions
v $43ff scroller: leftmost char tile X-pos (1-3)
v $43fe scroller: char tile width (1-3)
v $43f8 (value taken from $5300 - not used yet - )
v $4aff sprite background, 2nd 8-bit scroll. 0: 0f82 low 4-bit, 1: 0f82 high 4-bit
v $4afe scroll background layer: X-position offset
charset:
@abcdefghijklmnopqrstuvwxyz.,!?:;()0123456789+-
sprites: d010 1 1
18 48 78 a8 d8 08 38
cols: 0a red j
0f grey o
07 yellow g
0f o
0a j
08 h
02 b
09 i
02 b
08 h
0a j
0f o
07 g
0f o
0a j
sprite background:
0123456789012345678901234567890123456789
0000000000111111111122222222223333333333
111111222222333333444444555555666666777777 <-- 0f82, put new chars to 2nd 4-bit (bits#3-0)
Chars: from $5b00 (8 bytes, bits #3-0 / 00-0f values)
white bg (lower part)
bck00 5b00: $07 $09 (left, squared)
bck01 5b08: $0e (left, curved, 'o', etc.)
bck02 5b10: $1b (left, curved#2, 's', 'y')
bck03 5b18: $2c (left, 'W')
bck04 5b20: $35 (left, 'V')
bck05 5b28: $3d $3e (. and , - maybe same bckgrnd)
bck06 5b30: $4c (bottom/middle of '1')
bck0e 5b38: $45 ( '(' bottom-right)
red bg (upper part):
bck07 5b40: $05 $0f (top-right, C, d, e etc.)
bck08 5b48: $11 (top-left, B, D)
bck09 5b50: $1a (top-right, V, W, X, Y etc)
bck0a 5b58: $1d (top-right, M)
bck0b 5b60: $2b (top-middle of 'T')
bck0c 5b68: $3c (top-right, Z, 2)
bck0d 5b70: $4a (middle-top, '1')
bck0f 5b78: $29 (left of 'T')
colours:
0 - @ - black
1 - a - white
2 - b - red
3 - c - cyan
4 - d - purple
5 - e - green
6 - f - blue
7 - g - yellow
8 - h - orange
9 - i - brown
a - j - light red
b - k - dark grey
c - l - grey
d - m - light green
e - n - light blue
f - o - light grey
transition, from black to white: @ibhjoga
PLANS:
-----
fade-in sequence:
1. 24-char dycp in the middle of the screen. Screen is black. Welcome text shown, e.g.
"012345678901234567890123"
" eppur si muove "
---
Logo colour effect: after $d016 move is finalized, scroll left to right (upper), right to left (lower logo) the colours.
1) for 2300 and 2400 data ($xy is used)
for 2c00 and 2d00 data ($0z is used), introduce a colour table.
2) 7-char width colour cycle, like '3210123' for each row (5 rows we have, both logos)
where:
3 - original colour from 2300/2400 and 2c00/2d00
2 - 1 step darker color variant for x, y and z (use table#1 for that!)
1 - 2 steps darker color variant for x, y and z (use table#2 for that!)
0 - x, y and z = $0 (black)
3) 3: original colour: @abcdefghijklmno
2: darker: : @o@nkf@oi@h@kedl
1: darkest: : @l@d@@@h@@b@ikfk
stored from >> $5d00 <<: ...in code, call subroutine with y=$00, $20, $40 or $60
real-time logic: precalculated / as data (up char, lw c, up col, lw col):
0 : 3 (original scale) 2300, 2400, 2c00, 2d00
20: 2 6000, 6100, 6200, 6300
40: 1 6400, 6500, 6600, 6700
60: 0 (full black scale) 6800, 6800, 6800, 6800
DYCP:
-----
- raster logic: $429f, charset from $0800 ($d018=$12). Only first 48x8 bites used.
- ................$4d00: main routine: draw (SLOW!!!)
- ................$4d60: clear v1 at old positions (old, SLOW!)
- ................$4e00: clear v2 (fast, speedcode, NEW!)
- $5900: 11-pixel height sinus, ~24x2 bytes width? ($30, value range: $00-$0b)
*- $5dc0: 24-byte copy from $5900 (DYCP sinus)
- $6900: DYCP chars, 24-char, stored as bitmap (for faster copy-paste)
- $6a00: DYCP draw, copy from $6900, speed code (NEW, FAST!)
*- $6e00: sinus 28-byte write to: $5dc0 - $5dd7
- $6e80: change 1 char at $6900 (1 char / frame)
- $6f00: 1: draw char (based on X register), 0: do nothing
- $0a00: DYCP background layer, sprite 0,1,2,3
- $0b00: DYCP background layer, sprite 4,5,6,7
- $47 - $48: DYCP text pointer, start: $2e80 (main), $1b00 (intro/fade-in)
- ............$6e60: DYCP background colour (OLD, not used anymore! too slow)
- $7100: DYCP background colour set (new, speed code, fast!)
*- $7200: DYCP clear v3 (fast, speedcode, NEW, superfast - only 1st and 5th byte cleared!)
REJECTED:
---------
main part:
- logo upper/lower: switch colours, left to right and other way around, as soon as the
logo swing starts (or stops?) <-- declined due to MC logo bitmap colour issues...
FADE-IN ROUTINES:
-----------------
1) raster logic: $1800 (copy from $4200)
DYCP with text: 'eppur si muove', at the middle of the screen
raster logic: $1800 (copy from $4200)
when DYCP text reaches 'ff', sets $19 to $FFFF. (from $1c30 )
goto logic to 2nd fade-in:
- from $1c43 ($fffe set here e.g., + JSR $1D20, lda $19 to $18eb, $1a41=$00, $1a46=$18
- $1c58: lda $ad to $1c08 (here, JSR $1c80 is placed normally, draw char from $6900)
- $1a40: last DYCP fade-out (24 frames long only), then initiate 2nd (logo) fade-in
- $1d20: additional value inits, like $1e01=$00, $1e0a=$27
- $19bc = $20, $19bf = $ad (JSR logo upper , LDA logo lower)
2) logos fade-in:
raster logic: $1900 (copy from $1800)
$1912: jsr 1ce0 : clear DYCP (middle of screen)
$39c0-39e7: logo colour mask. 1:draw, 0:skip column
$ : (copy from 3e00??)
IDEA: use a different logic: 3 state, darkest, darker, original colours / frame
Sequence:
a) 1st logo draw, then, change JSR $1e00 to LDA $1e00 ($19bc-n)
b) delay synced to music
c) 2nd logo draw, JSR $1e80, at the end JSR/LDA change
d) delay synced to, then FFFF=$42 --> set $19eb = $73 (yes, raster fade-in!:-)
( when timing ends, sets $42 to $FFFF )
...this happens at $1fd8 (ldA $73, STA $19eb)
draw DYCP lower position: copy from $4117 - $412a
--> after fade, call $1a00, which draws the DYCP chars and colours before $4200 runs??
3) logo D020 rasters fade-in (20-30 frames??):
$7300: raster logic, exactly the same as $4200 but scroll & DYCP code disabled and
--> raster fade-in logic added
When fade-in ends:
--> set $ffff to $42
$7480: fade in rasters + at the end, continue at $4200 --> set $73eb=$42
(init: 1fe0, sets $00 to $7480)
colour data upper: $7400 - $7420 (additional $01 values until $743f)
colour data lower: $7440 - $7460
raster data: 46e0 (upper) 48e0 (lower)
| Production Info Submitted by zscs on 1 February 2022
About a year ago, St0rmfr0nt sent me an Amiga 500 logo and based on that, I got an idea. Took me months to figure out, how that idea could be feasible. 5 weeks ago, when I started to do asm coding again that has become clear, even if not a special hires logo but at least a small size hires scroll routine could be done which could have 3 different hires colours (e.g. black as background and 2 other colours). 2 weeks ago I started to code it and became obvious, why I would have sticked to an 1x1 scroller if bigger could be also done? :-) So here it is, a 3x4-char scroller routine with variable speeds, entirely coded by me from scratch - and as a proof of concept: 3 different hires colour pixels can be used in a 8x8 pixel matrix. At least in the 1st and the last char row. :-)
As soon as the first version of the scroller worked, I added a fastmade logo, a few effects and afterwards, an intro sequence, synchronized to the music. Special thanks to Vincenzo who has chosen the music for this little one-file demo and provided it to me. Also thanks to all Excess members who supported me and also many thanks for your patience (I was not that productive during the last 2 weeks). ;-)
Note: first I thought, starting this 'intro' in Intro Competition 2021 would be cool but after a few days that was clear, I've already run out of 16k. I had to use a few memory-eating speedcode routines due to rastertime shortage. E.g. the small colour transition effect on these logos were realtime, I used a small conversion matrix to it but it was extremely slow. So I had to precalculate and store it (only those tables with the related code take ~4k memory). |
|
|
|
| Search CSDb |
| Navigate | |
|
| Detailed Info | |
|
| Fun Stuff | |
· Goofs · Hidden Parts · Trivia
|
|
| Forum | |
|
| Support CSDb | |
|
| |
|