New size coding contest "ZX Spectrum effect"

Using, learning, programming and modding the Gigatron and anything related.
Forum rules
Be nice. No drama.
Hans61
Posts: 102
Joined: 29 Dec 2020, 16:15
Location: Saxonia
Contact:

Re: New size coding contest "ZX Spectrum effect"

Post by Hans61 »

This is outside of the competition here. I just wanted to point out another idea.
I tried using the v6502 CPU. The actual program is 19 bytes without crashing.
To activate the v6502 CPU on the Gigatron, another 12 bytes are required for the official route.
The entire GT1 file is 40 bytes.
Maybe there is a shorter way to activate the v6502 CPU bypassing the system function, I don't know.
I tested it on real hardware.

The 6502 program:

.ORG $0060
LDA #$00
LOOP .BYTE $8d
addrL .BYTE $00
addrH .BYTE $08
EOR #$ff
INC addrL
BNE LOOP
EOR #$ff
INC addrH
BPL LOOP
STOP BNE STOP

0060: A9 00 8D 00 08 49 FF E6
0068: 63 D0 F7 49 FF E6 64 10
0070: F1 D0 FE

The gt1 startup file:

SYS_Run6502_v4_80 EQU 0x0B0C
sysFn EQU 0x22
vLR EQU 0x1A

LDWI SYS_Run6502_v4_80
STW sysFn
LDWI 0x0060 ; $6502_start_address
STW vLR
SYS 80

Everything together as gt1:
chess6502.gt1
(40 Bytes) Downloaded 14 times
Phibrizzo
Posts: 69
Joined: 09 Nov 2022, 22:46

Re: New size coding contest "ZX Spectrum effect"

Post by Phibrizzo »

\
lb3361 wrote: 18 Mar 2024, 15:01 Just to see how small it can be using only C and without crashing.
Yoy gave me an intersting idea.
All program is in User variables space

Code: Select all

_CPU    v5.vcpu
_VAR    FC_Main #129
_RUN    #131            ; FC_Main + 2

; -----------------------

_VAR    ScrAdr  #129
_VAR    ScrAdrH #130

_ORG    FC_Main

DC_W    #$0800  ; set screen address before code

_LAB #1
        LD      ScrAdrH
        XORW    ScrAdr
        ANDI    #1
        ADDI    #63
        POKE    ScrAdr
        INC     ScrAdr
        LD      ScrAdr
        XORI    #160
        BNE     #1
        ST      ScrAdr
        INC     ScrAdrH
        LD      ScrAdrH
        XORI    #128
        BNE     #1
_LAB #2
        BRA     #2
Code size 34 bytes, GT1 40 bytes.

Hans61:
Good idea too :)
Attachments
phib_chess.gt1
(40 Bytes) Downloaded 14 times
lb3361
Posts: 367
Joined: 17 Feb 2021, 23:07

Re: New size coding contest "ZX Spectrum effect"

Post by lb3361 »

Interesting.

@Phibrizzo : you can save 11 bytes with a single loop. Total: code = 23 bytes, gt1 = 29 bytes. (SMALLEST GT1)

Code: Select all

* file: phib_chess_c.gt1

0081  00 08                                             |..|
0083  1a 82             [vCPU] LD     $82               |..|
0085  fc 81                    XORW   $81               ||.|
0087  82 01                    ANDI   1                 |..|
0089  e3 3f                    ADDI   $3f               |c?|
008b  f0 81                    POKE   $81               |p.|
008d  59 01                    LDI    1                 |Y.|
008f  99 81                    ADDW   $81               |..|
0091  2b 81                    STW    $81               |+.|
0093  35 53 81                 BGE    $0083             |5S.|
0096  90 94                    BRA    $0096             |..|
* 23 bytes

* start at $0083
@Hans61: you can also save a couple bytes as follows: Total: code = 10*vCPU + 19*v6502 = 29 bytes gt1 = 35 bytes

Code: Select all

* file: chess6502b.gt1

0060  11 0c 0b          [vCPU] LDWI   $0b0c             |...|
0063  2b 22                    STW    sysFn             |+"|
0065  b4 e6                    SYS    80                |4f|
0067  85 60 00                 CALLI  $0060             |.`.|
006a  a9 00            [v6502] LDAIM  0                 |).|
006c  a8                       TAY                      |(|
006d  99 00 08                 STAAY  $0800             |...|
0070  49 ff                    EORIM  $ff               |I.|
0072  c8                       INY                      |H|
0073  d0 f8                    BNE    $006d             |Px|
0075  49 ff                    EORIM  $ff               |I.|
0077  e6 6f                    INCZ   $6f               |fo|
0079  10 f2                    BPL    $006d             |.r|
007b  d0 fe                    BNE    $007b             |P~|
* 29 bytes

* start at $0067     #### THIS IS IMPORTANT
Both write the same pixels using the same loop and halt without crashing.
So vCPU wins, but only because the 6502 version needs 10 bytes to go into 6502 mode.
Attachments
phib_chess_c.gt1
(29 Bytes) Downloaded 11 times
chess6502b.gt1
(35 Bytes) Downloaded 11 times
lb3361
Posts: 367
Joined: 17 Feb 2021, 23:07

Re: New size coding contest "ZX Spectrum effect"

Post by lb3361 »

Found a devious way to save two bytes (execution starts in 0x8b)
Code = 21 bytes. GT1 = 27 bytes

Code: Select all

* file: phib_chess_d.gt1

0081  ff 07
0083  fc 82                    XORW   $82               ||.|
0085  82 01                    ANDI   1                 |..|
0087  e3 3f                    ADDI   $3f               |c?|
0089  f0 81                    POKE   $81               |p.|
008b  59 01                    LDI    1                 |Y.|
008d  99 81                    ADDW   $81               |..|
008f  2b 81                    STW    $81               |+.|
0091  35 53 81                 BGE    $0083             |5S.|
0094  90 92                    BRA    $0094             |..|
* 21 bytes

* start at $008b
phib_chess_d.gt1
(27 Bytes) Downloaded 11 times
Also found how to save two bytes from the 6502 version (now 33 bytes)

Code: Select all

* file: chess6502c.gt1

0060  11 0c 0b          [vCPU] LDWI   $0b0c             |...|
0063  2b 22                    STW    sysFn             |+"|
0065  b4 e6                    SYS    80                |4f|
0067  85 60 00                 CALLI  $0060             |.`.|
006a  a9 00            [v6502] LDAIM  0                 |).|
006c  a8                       TAY                      |(|
006d  49 ff                    EORIM  $ff               |I.|
006f  99 00 08                 STAAY  $0800             |...|
0072  c8                       INY                      |H|
0073  d0 f8                    BNE    $006d             |Px|
0075  e6 71                    INCZ   $71               |fq|
0077  10 f6                    BPL    $006f             |.v|
0079  d0 fe                    BNE    $0079             |P~|
* 27 bytes

* start at $0067
chess6502c.gt1
(33 Bytes) Downloaded 12 times
Phibrizzo
Posts: 69
Joined: 09 Nov 2022, 22:46

Re: New size coding contest "ZX Spectrum effect"

Post by Phibrizzo »

This is my last word:

Code: Select all

_CPU    v5.vcpu

_VAR    FC_Main #129

_RUN    #141            ; FC_Main + 12

; -----------------------

_VAR    ScrAdr  #129
_VAR    ScrAdrH #130

_ORG    FC_Main

DC_W    #$0800  ; load screen address before code

_LAB #1
        XORW    ScrAdrH
        ANDI    #1
        ADDI    #63
        POKE    ScrAdr
        INC     ScrAdr

; start from here <---
_LAB #2
        LD      ScrAdr
        XORI    #160
        BNE     #1
        ST      ScrAdr
        INC     ScrAdrH
        LD      ScrAdrH
        XORI    #128
        BNE     #2
_LAB #3
        BRA     #3
Code size: 32 bytes, GT1: 38 bytes.

Big thanks everyone for participating in the competition.

Maybe someone will suggest another?
phib_chess2.gt1
(38 Bytes) Downloaded 10 times
petersieg
Posts: 111
Joined: 28 Jun 2023, 09:06

Re: New size coding contest "ZX Spectrum effect"

Post by petersieg »

Maybe someone will suggest another?
I am thinking of:

Code: Select all

"Write the nicest/most interesting/awesome demo/intro/graphic effect/game whatsoever"

Any language, any size (but smaller is beautiful), could run in 32k/64k/128k, can be run from sd card or rom ;-)
Should be run in romv5a, but if required, others are fine too.

Source, gt1 (if applicable) and picture/hardcopy should be attached to post.
If video is better - than link to any platform.

Competition should run until end of November 2024, so that in December, everyone could vote for her/his favorite.
What you think? If more than me would think, that could be fun, we should open a new thread for this
petersieg
Posts: 111
Joined: 28 Jun 2023, 09:06

Re: New size coding contest "ZX Spectrum effect"

Post by petersieg »

Another nice contest could be:
"Size coding contest = create interesting/astonishing graphic effects with small piece of coding"

See: http://www.sizecoding.org/wiki/Main_Page

best, Peter
Phibrizzo
Posts: 69
Joined: 09 Nov 2022, 22:46

Re: New size coding contest "ZX Spectrum effect"

Post by Phibrizzo »

On latest Revision 2024 Demo Party, i saw what people can do in 256 bytes (not kB or MB). This is not possible for regular people.
The same: 4 kilo bytes exe graphics competition.
I'll try to post links to Youtube later.

Edit:

https://www.youtube.com/watch?v=2p5HCTUNgfU
Post Reply