ZX Spectrum > PROGRAMOWANIE

Efekty na ramce - Border Creator w ZXStealth

(1/2) > >>

sect0r:
Przegladajac dostepne emulatory trafilem na Border Creator w emulatorze Z80Stealth
Tworzy nam gotowy kod asm.
Tak przy okazji jestem ciekaw ile czasu zajelo liczenie Part2 w Shock Megademo...

Strona emulatora http://z80.emu-russia.net/

Tygrys:
A ten wygenerowany kod wymaga timingów Pentagona?

sect0r:
Wyglada ze dla standardowego 128, ale niemam jeszcze fizycznego sprzetu zeby to sprawdzic



;Created by Z80Stealth Border Creator
               
             device zxspectrum128   
;--------------------------------   
             ORG   #6200      
start:            
             CALL  SETUPINT      
               
             DI         
             LD  HL,#FE00      
             LD  DE,#FE01      
             LD  BC,#100      
             LD  (HL),#FF      
             LDIR         
             LD  HL,#FFFF      
             LD  (HL),#C9           
               
             DI         
             LD  A,#FE      
             LD  I,A                  
             IM  2                   
             EI         
               
BORDERLOOP   HALT                   
             EI         
; wait for the first visible line   
             LD   BC,124      
WAIT0        DEC  BC         
             LD   A,B      
             OR   C         
             NOP         
             JP   NZ,WAIT0          
             NOP:NOP:NOP:NOP:NOP:NOP   
             DEC DE         
             LD (STACK),SP      
;=== set up colours =============   
             LD  A,  0x01      
             LD  BC, 0x02fe      
             LD  DE, 0x0304      
             LD  HL, 0x0506      
;=========== 224 tacts ============   
Row_0        out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:nop:nop:
Row_1        out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:nop:nop:
.
.
.
.
.
.
Row_299        out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:nop:nop:
Row_300        out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:nop:nop:
Row_301        out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:out (c),0:nop:nop:
;=========== END border =========   
             LD SP,(STACK)          
             DEC DE             
;==== Press key SPACE ? =========   
             LD A,#7F             
             IN A,(#FE)             
             RRA         
             JP C, BORDERLOOP       
ReturnToBAS: DI         
             LD A,#3F      
             LD I,A         
             IM 1         
             EI         
             RET         
;=========== SETUPINT ============= 
SETUPINT:    DI         
             LD  HL,INT      
             LD  (#94FF),HL         
             LD  A,0             
             LD  (BUFF+4),A          
             LD  E,1             
             LD  HL,BUFF      
             LD  A,#94      
             LD  I,A             
             IM  2             
             EI         
             HALT         
             CALL  WAIT:INC E   
             CALL  WAIT:INC E   
             CALL  WAIT:INC E   
             DI         
             LD  BC,2749      
             LD  HL,(BUFF+1)         
             EX  DE,HL      
             LD  HL,(BUFF+3)          
             LD  A,H:OR A           
             JR  NZ,F2      
F0:          LD  A,L:CP  4:JR Z,DISP3
             LD  A,D:CP  L:JR Z,DISP2
             LD  A,E:CP  D:JR Z,DISP1
DISP0:       NOP:LD R,A   :LD R,A   
F1:          DEC BC:LD A,B           
             OR  C:JR  NZ,F1         
             RET         
F2:          LD  E,D:LD D,L:LD L,H   
             DEC BC :DEC BC:LD A,(HL)
             NOP         
             JR  F0                 
DISP1:       DEC BC:NOP      
             JR  DISP0      
DISP2:       JR  DISP0      
DISP3:       LD  R,A                 
             LD  A,(HL)      
             JR  DISP0      
WAIT:        LD  BC,2753      
W1:          DEC BC:LD  A,B          
             OR  C:JR NZ,W1         
             LD  B,(HL)      
             RET         
INT:         LD (HL),E:INC HL       
             LD D,(HL):LD D,(HL)     
             EI         
             RET         
BUFF:        DEFS 5         
STACK        DEFW 0         
;================================   
        savesna "test.sna" ,start     
;        savetap "test.tap" ,start     

Tygrys:
Kod ten można skompilować za pomocą sjasmplus.

Do tego wygląda jako template do wypełnienia wartościami, tam gdzie są etykiety Row_NUMER.

device zxspectrum128 i 224takty oznacza że kod jest przygotowany dla Pentagona. (http://www.worldofspectrum.org/rusfaq/#21)

azesmbog:
хмммм....







============
228 takty - no problem! :)

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

Idź do wersji pełnej