;VPOKE, VPEEK e SPRITES

func_vpoke:

push af
call func_prep_write_vram
ld a,(7)
ld c,a
pop af
out (c),a
ret

func_vpeek:

call func_prep_read_vram
ld a,(6)
ld c,a
in a,(c)
ret


func_vpeek_A:

LD A,(6)
LD C,A
INC C
CALL func_vpeek_1
DEC C
IN A,(C)
RET

func_vpeek_old:

LD A,(6)
LD C,A
INC C
CALL func_vpeek_1
DEC C
LD H,0
IN L,(C)
RET

func_vpeek_1: ;$72D0
CALL func_vpoke_2 ;$72E0
EI
OUT (C),A
RET


func_vpoke_old:

LD B,A
LD A,(6)
LD C,A
INC C
CALL func_vpoke_1 ;$72D7
DEC C
OUT (C),B
RET

func_vpoke_1:
CALL func_vpoke_2 ;$72E0
OR $40
EI
OUT (C),A
RET

func_vpoke_2:
LD A,($2D)
AND A
JR Z,func_vpoke_3 ;07300H
LD A,H
RLCA
RLCA
AND 3
LD E,A
LD A,($FCAF)
CP 7
LD A,($FAF6)
JR C,func_vpoke_4 ;072F7H
ADD A,A

func_vpoke_4:
ADD A,A
ADD A,E
DI
OUT (C),A
LD A,$8E
OUT (C),A

func_vpoke_3:
DI
OUT (C),L
LD A,H
AND $3F
RET

func_set_sprite:  ;$7089
        PUSH HL
        CALL $84
        LD A,(6)
        LD C,A
        INC C
        CALL func_vpoke_1
        DEC C
        CALL $8A
        LD A,8
        JR NC,LB709F
        LD A,$20
LB709F: LD B,A
        POP HL
        SUB (HL)
        PUSH AF
        JR C,LB70AA
        LD B,(HL)
        INC B
        DEC B
        JR Z,LB70AF
LB70AA: INC HL
LB70AB: OUTI
        JR NZ,LB70AB
LB70AF: POP AF
        RET Z
        RET C
        LD B,A
        XOR A
LB70B4: OUT (C),A
        DJNZ LB70B4
        RET

func_put_sprite:

LB710F: PUSH AF
LB7110: LD A,(6)
LB7113: LD C,A
LB7114: INC C
LB7115: LD A,($FCAF)
LB7118: CP 4
LB711A: JP NC,LB7184
LB711D: POP AF
LB711E: PUSH HL
LB711F: PUSH DE
LB7120: CALL $87
LB7123: POP DE
LB7124: PUSH HL
LB7125: CALL func_vpeek_1 ;$72D0
LB7128: DEC C
LB7129: LD A,B
LB712A: LD HL,$FC18
LB712D: LD B,4
LB712F: INI
LB7131: JR NZ,LB712F
LB7133: LD B,A
LB7134: BIT 7,B
LB7136: JR Z,LB7153
LB7138: LD ($FC18),IY
LB713C: PUSH IX
LB713E: POP HL
LB713F: LD A,H
LB7140: AND $80
LB7142: LD E,A
LB7143: LD A,L
LB7144: LD HL,$FC1B
LB7147: JR Z,LB714B
LB7149: ADD A,$20
LB714B: LD ($FC19),A
LB714E: LD A,(HL)
LB714F: AND $7F
LB7151: OR E
LB7152: LD (HL),A
LB7153: BIT 6,B
LB7155: JR Z,LB7163
LB7157: LD HL,$FC1B
LB715A: LD A,D
LB715B: AND $F
LB715D: LD D,A
LB715E: LD A,(HL)
LB715F: AND $F0
LB7161: OR D
LB7162: LD (HL),A
LB7163: POP HL
LB7164: EX (SP),HL
LB7165: BIT 5,B
LB7167: JR Z,LB7174
LB7169: CALL $8A
LB716C: LD A,H
LB716D: JR NC,LB7171
LB716F: ADD A,A
LB7170: ADD A,A
LB7171: LD ($FC1A),A
LB7174: POP HL
LB7175: INC C
LB7176: CALL func_vpoke_1 ;$72D7
LB7179: DEC C
LB717A: LD HL,$FC18
LB717D: LD B,4
LB717F: OUTI
LB7181: JR NZ,LB717F
LB7183: RET
LB7184: POP AF
LB7185: PUSH AF
LB7186: PUSH HL
LB7187: PUSH DE
LB7188: PUSH AF
LB7189: CALL $87
LB718C: POP AF
LB718D: PUSH HL
LB718E: PUSH AF
LB718F: CALL func_vpeek_1 ;$72D0
LB7192: DEC C
LB7193: LD A,B
LB7194: LD HL,$FC18
LB7197: LD B,3
LB7199: INI
LB719B: JR NZ,LB7199
LB719D: LD B,A
LB719E: POP AF
LB719F: ADD A,A
LB71A0: ADD A,A
LB71A1: CALL $87
LB71A4: DEC H
LB71A5: DEC H
LB71A6: PUSH HL
LB71A7: INC C
LB71A8: CALL func_vpeek_1 ;$72D0
LB71AB: DEC C
LB71AC: LD A,B
LB71AD: LD HL,$FC1C
LB71B0: LD B,$10
LB71B2: INI
LB71B4: JR NZ,LB71B2
LB71B6: LD B,A
LB71B7: LD E,0
LB71B9: LD L,$FF
LB71BB: BIT 7,B
LB71BD: JR Z,LB71D4
LB71BF: LD ($FC18),IY
LB71C3: PUSH IX
LB71C5: POP HL
LB71C6: LD A,H
LB71C7: AND $80
LB71C9: LD E,A
LB71CA: LD A,L
LB71CB: JR Z,LB71CF
LB71CD: ADD A,$20
LB71CF: LD ($FC19),A
LB71D2: LD L,$7F
LB71D4: POP IX
LB71D6: POP IY
LB71D8: POP AF
LB71D9: BIT 6,B
LB71DB: JR Z,LB71E5
LB71DD: AND $F
LB71DF: OR E
LB71E0: LD E,A
LB71E1: LD A,L
LB71E2: AND $F0
LB71E4: LD L,A
LB71E5: PUSH BC
LB71E6: LD D,L
LB71E7: LD HL,$FC1C
LB71EA: LD B,$10
LB71EC: LD A,(HL)
LB71ED: AND D
LB71EE: OR E
LB71EF: LD (HL),A
LB71F0: INC HL
LB71F1: DJNZ LB71EC
LB71F3: POP BC
LB71F4: POP HL
LB71F5: BIT 5,B
LB71F7: JR Z,LB7204
LB71F9: CALL $8A
LB71FC: LD A,H
LB71FD: JR NC,LB7201
LB71FF: ADD A,A
LB7200: ADD A,A
LB7201: LD ($FC1A),A
LB7204: PUSH IX
LB7206: POP HL
LB7207: INC C
LB7208: CALL func_vpoke_1 ;$72D7
LB720B: DEC C
LB720C: LD HL,$FC1C
LB720F: LD B,$10
LB7211: OUTI
LB7213: JR NZ,LB7211
LB7215: PUSH IY
LB7217: POP HL
LB7218: INC C
LB7219: CALL func_vpoke_1 ;$72D7
LB721C: DEC C
LB721D: LD HL,$FC18
LB7220: LD B,3
LB7222: OUTI
LB7224: JR NZ,LB7222
LB7226: POP DE
LB7227: LD A,$1F
LB7229: SUB D
LB722A: RET Z
LB722B: LD E,A
LB722C: LD D,A
LB722D: PUSH IX
LB722F: POP HL
LB7230: LD A,L
LB7231: ADD A,$10
LB7233: LD L,A
LB7234: JR NC,LB7237
LB7236: INC H
LB7237: INC C
LB7238: PUSH DE
LB7239: CALL func_vpeek_1 ;$72D0
LB723C: POP DE
LB723D: DEC C
LB723E: LD B,$10
LB7240: IN A,(C)
LB7242: AND $40
LB7244: JR NZ,LB724A
LB7246: DJNZ LB7240
LB7248: JR LB724D
LB724A: DEC E
LB724B: JR NZ,LB7230
LB724D: LD A,D
LB724E: SUB E
LB724F: RET Z
LB7250: LD E,A
LB7251: PUSH IX
LB7253: POP HL
LB7254: PUSH DE
LB7255: LD A,($FC1C)
LB7258: AND $80
LB725A: LD D,A
LB725B: LD A,L
LB725C: ADD A,$10
LB725E: LD L,A
LB725F: JR NC,LB7262
LB7261: INC H
LB7262: PUSH HL
LB7263: INC C
LB7264: PUSH DE
LB7265: CALL func_vpeek_1 ;$72D0
LB7268: POP DE
LB7269: DEC C
LB726A: LD HL,$FC2C
LB726D: LD B,$10
LB726F: IN A,(C)
LB7271: AND $7F
LB7273: OR D
LB7274: LD (HL),A
LB7275: INC HL
LB7276: DJNZ LB726F
LB7278: POP HL
LB7279: PUSH HL
LB727A: INC C
LB727B: PUSH DE
LB727C: CALL func_vpoke_1 ;$72D7
LB727F: POP DE
LB7280: DEC C
LB7281: LD HL,$FC2C
LB7284: LD B,$10
LB7286: OUTI
LB7288: JR NZ,LB7286
LB728A: POP HL
LB728B: DEC E
LB728C: JR NZ,LB725B
LB728E: POP DE
LB728F: LD B,E
LB7290: PUSH IY
LB7292: POP HL
LB7293: INC HL
LB7294: INC HL
LB7295: INC HL
LB7296: INC HL
LB7297: INC C
LB7298: CALL func_vpoke_1 ;$72D7
LB729B: DEC C
LB729C: LD DE,($FC18)
LB72A0: OUT (C),E
LB72A2: OUT (C),D
LB72A4: DJNZ LB7293
LB72A6: RET
