The following warnings occurred:
Warning [2] Undefined array key 0 - Line: 1677 - File: showthread.php PHP 8.2.31 (Linux)
File Line Function
/inc/class_error.php 157 errorHandler->error
/showthread.php 1677 errorHandler->error_callback
/showthread.php 916 buildtree




Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Stack Bug in ZXB 1.2.5-r1489 ?
#13
Unchunk: This is the uncompression routine by S.Romero (I think, but not sure) posted in the Speccy.org wiki:

Code:
SUB unchunk (source as uinteger,display as uinteger,size as uinteger) POKE uinteger @datosch,source: POKE uinteger @datosch+2,display: POKE uinteger @datosch+4,size gosub chunk END SUB datosch: ASM sourcech: defw 0 displaych: defw 0 sizech: defw 0 END ASM chunk: ASM ; Prueba de descompresion RLE ; Desempaquetamos un SCR comprimido con RLE sobre la pantalla ;ORG 32768 ; Cargamos los datos y preparamos nuestra rutina LD HL, (sourcech) LD DE, (displaych) LD BC, (sizech) ;CALL RLE_decompress ;; ;; RLE_decompress ;; Descomprime un bloque de datos RLE de memoria a memoria. ;; ;; Entrada a la rutina: ;; ;; HL = dirección origen de los datos RLE. ;; DE = destino donde descomprimir los datos. ;; BC = tamaño de los datos comprimidos. ;; RLE_decompress: RLE_dec_loop: ld a,(hl) ; leemos un byte cp 192 jp nc, RLE_dec_compressed ; si byte > 192 = está comprimido ld (de), a ; si no está comprimido, escribirlo inc de inc hl dec bc RLE_dec_loop2: ld a,b or c jr nz, RLE_dec_loop ret ; miramos si hemos acabado RLE_dec_compressed: ; bucle para descompresión push bc and 63 ; cogemos el numero de repeticiones ld b, a ; lo salvamos en B inc hl ; y leemos otro byte (dato a repetir) ld a, (hl) RLE_dec_loop3: ld (de),a ; bucle de escritura del dato B veces inc de djnz RLE_dec_loop3 inc hl pop bc ; recuperamos BC dec bc ; Este DEC BC puede hacer BC=0 si los datos ; RLE no correctos. Cuidado (mem-smashing). dec bc jr RLE_dec_loop2 ret END ASM
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)