DESEMPOLVANDO NHP 3.6 (AYUDA)
Re: DESEMPOLVANDO NHP 3.6 (AYUDA)
Han sido días complicados acá. Por si no lo saben, trabajo en el Ejército. Se supone que soy Adminstrador de Base Dato pero estoy a cargo de toda la arquitectura del Sistema de Educación a Distancia.
He estado preocupado que no los hackeen. Este Sistema fué clave en el actuar de militares durante el toque de queda. Actuaron de la mejor forma posible ya que tienen muchos cursos de DDHH y son requisito para el ascenso.
Como somos entidad del Ejercito, han hackeado varias páginas acá pero nosotros hasta ahora invictos.
He estado preocupado que no los hackeen. Este Sistema fué clave en el actuar de militares durante el toque de queda. Actuaron de la mejor forma posible ya que tienen muchos cursos de DDHH y son requisito para el ascenso.
Como somos entidad del Ejercito, han hackeado varias páginas acá pero nosotros hasta ahora invictos.
Re: DESEMPOLVANDO NHP 3.6 (AYUDA)
Bueno tío,,, ya habrán tiempos más tranquilos para analizar todo y con más calma, lo importante es que este bien, un lugar como el suyo es complicado de mantener en linea y sin hackeos,,, cuando se pueda, veamos esto paso a paso,, yo por lo menos ya realice el primer paso que necesitaba, ahora estamos realizando mejoras, para mantener vivo el sistema de casetes para los que somos amantes, aunque digan que esto se esta acabando, somos pocos los que queremos revivir lo que había y dejar nuevas versiones. De todas maneras se agradece enormemente la buena voluntad de su parte.
Re: DESEMPOLVANDO NHP 3.6 (AYUDA)
Un pequeño avance con el proyecto,,, cambio de velocidades, 4 primeros bloques a 600 baudios, load y carga de juego a 1150, probado en atari real, carga al 90%, si la casetera esta bien regulada pasa de una.
Re: DESEMPOLVANDO NHP 3.6 (AYUDA)
yo de nuevo..... bueno siguiendo con el proyecto de a poco en una nueva versión pero con la misma tematica y estetica, me encontré con el siguiente problema, que puede que a vitico le haya pasado, dejaremos como ejemplo el goonies, como este juegos u otros son de carga solo para 130xe.
a) en primera instancia ya se modificó tanto el asm principal como el loader para que permitiera la carga de archivos superiores a 250 bloques y que tengan más de 65534 bytes. (logrado).
b)quedo soportando el uso de 4 bancos de memoria más el principal (logrado).
c)se bajo de 252 bytes de data del juego a 251 para colocar otro byte mas para el contador y sobrepasar los 256 bloques restantes(logrado).
Paso a documentar el problema y si es posible alguna aclaración del tema.
goonies comienza con la carga y en su primer bloque aparece la portada del mismo juego, que tengo entendido que ejecuta un sistema de carga para que la data restante se empiece a cargar en los bancos de memoria restante del atari, es como un organizador.
loader del copiador, obliga a que esta portada se elimine y aparezca el dli del copiador nuevamente con la data del nombre y los bloques restantes de lo que se esta cargando, existiendo un pito lento, así avanza como 4 bloques mas descarga y el archivo se cuelga,,, alguna idea en la que me puedan ayudar u orientación al respecto,,, plis..
pd: los demás juegos que tengo comprimidos y procesados para lecturas de casete funcionan bien.
pd2: Vitoco.... en el sitre uso el mismo xex y carga sin problemas.
a) en primera instancia ya se modificó tanto el asm principal como el loader para que permitiera la carga de archivos superiores a 250 bloques y que tengan más de 65534 bytes. (logrado).
b)quedo soportando el uso de 4 bancos de memoria más el principal (logrado).
c)se bajo de 252 bytes de data del juego a 251 para colocar otro byte mas para el contador y sobrepasar los 256 bloques restantes(logrado).
Paso a documentar el problema y si es posible alguna aclaración del tema.
goonies comienza con la carga y en su primer bloque aparece la portada del mismo juego, que tengo entendido que ejecuta un sistema de carga para que la data restante se empiece a cargar en los bancos de memoria restante del atari, es como un organizador.
loader del copiador, obliga a que esta portada se elimine y aparezca el dli del copiador nuevamente con la data del nombre y los bloques restantes de lo que se esta cargando, existiendo un pito lento, así avanza como 4 bloques mas descarga y el archivo se cuelga,,, alguna idea en la que me puedan ayudar u orientación al respecto,,, plis..
pd: los demás juegos que tengo comprimidos y procesados para lecturas de casete funcionan bien.
pd2: Vitoco.... en el sitre uso el mismo xex y carga sin problemas.
Re: DESEMPOLVANDO NHP 3.6 (AYUDA)
Mi primera impresión es que tu loader está chocando con la data cargada (el juego).
No sé exactamente dónde está almacenado el loader, pero por los primeros post de este hilo, parece ser que en $CC00. Al comparar con lo siguiente no se ve colisión explícita, aunque no sé si la rutina inicial hace algo en la memoria donde tienes el loader.
Algo que me di cuenta en tu loader es que manipula $D301, y que de la estructura del XEX puedes ver que también lo usa para forzar la carga de datos del juego directamente sobre cada bloque de memoria extendida. Tal vez tengas un conflicto ahí.
Eso es lo que se me ocurre por ahora sin mirar más código...
No sé exactamente dónde está almacenado el loader, pero por los primeros post de este hilo, parece ser que en $CC00. Al comparar con lo siguiente no se ve colisión explícita, aunque no sé si la rutina inicial hace algo en la memoria donde tienes el loader.
Código: Seleccionar todo
Analizando "GOONIESX.XEX"...
65535 [$FFFF] (binhead)
47872-48089 [$BB00-$BBD9] (218) PROG/DATA
738-739 [$02E2-$02E3] (2) -> 47872 [$BB00]
65535 [$FFFF] (binhead)
38656-39167 [$9700-$98FF] (512) PROG/DATA
65535 [$FFFF] (binhead)
39424-39543 [$9A00-$9A77] (120) PROG/DATA
54017-54017 [$D301-$D301] (1) $E3 "11100011"
65535 [$FFFF] (binhead)
16384-31487 [$4000-$7AFF] (15104) PROG/DATA
54017-54017 [$D301-$D301] (1) $E7 "11100111"
65535 [$FFFF] (binhead)
16384-27135 [$4000-$69FF] (10752) PROG/DATA
54017-54017 [$D301-$D301] (1) $EB "11101011"
65535 [$FFFF] (binhead)
16384-32383 [$4000-$7E7F] (16000) PROG/DATA
54017-54017 [$D301-$D301] (1) $EF "11101111"
65535 [$FFFF] (binhead)
16384-25983 [$4000-$657F] (9600) PROG/DATA
54017-54017 [$D301-$D301] (1) $FF "11111111"
65535 [$FFFF] (binhead)
24576-38655 [$6000-$96FF] (14080) PROG/DATA
65535 [$FFFF] (binhead)
5888-12031 [$1700-$2EFF] (6144) PROG/DATA
65535 [$FFFF] (binhead)
1536-1578 [$0600-$062A] (43) PROG/DATA
736-737 [$02E0-$02E1] (2) -> 1536 [$0600]
Eso es lo que se me ocurre por ahora sin mirar más código...
Re: DESEMPOLVANDO NHP 3.6 (AYUDA)
este es el código del loader
esta en $CC00, pero al desamblar te aparece el código en $0244
El xex del copiador lo estoy trabajando en MYDOS4.53
No se si la dirección $D301 tendría alguna complejidad ya que yo la uso para realizar el cambio de bancos usando el xmem como ejemplo
al realizar también el cambio de bancos se descontrola la velocidad, porque meto otro byte en la misma posición, pero como ambos van donde mismo no puedo jugar con la velocidad en otro lado. ahí estoy complicado. me interesa lo primero la carga del archivo,donde lo estoy pisando... porque he revisado y no me logro dar cuenta,,, son esos momentos en que te bloqueas y a veces es algo tan simple.
esta en $CC00, pero al desamblar te aparece el código en $0244
El xex del copiador lo estoy trabajando en MYDOS4.53
Código: Seleccionar todo
BAFER = $0700
BUFAUX = $0800
?RUTINA = BUFAUX+JUMP-RUTINA
GENDAT = $47
;
ORG $CC00
.BYTE $55,$55
LDY #$00
STY $0244
INY
STY $09
JSR RECUPERO
JMP START
NBYTES
.BYTE 251 ;$FC
FLAGY
.BYTE 0
FINISH
.BYTE 0,0
MMMSIOV
.BYTE $60,$00,$52,$40
.WORD BAFER
.BYTE $23,$00
.WORD $0100
.BYTE $00,$80
DLIST
.BYTE $70,$70,$70,$42
.WORD MENSAJE
.BYTE $70,$06,$70,$02,$70,$70
.BYTE $70,$70,$06,$70,$70,$06
.BYTE $70,$46
DLERR
.WORD NAME
.BYTE $70,$70,$70,$70,$02,$70
.BYTE $06
.BYTE $41
.WORD DLIST
MENSAJE
.SB "PARA COMPUTADORAS XL-XE-256K BY DOGDARK"
.SB " "
.SB +128,"dogdark"
.SB " softwares "
.SB "CODE PARCHE NEGRO & FIXED WILLYSOFT 2019"
.SB " PRESENTA "
.SB "--ACA VA EL TITULO--"
NAME
.SB " "
.SB " cargara dentro de "
CONTADOR
.SB "000 Bloques. "
.SB " "
.SB +128,"sistemas"
.SB " stac 2019 "
MERR
.SB " - E R R O R - "
.SB " Retroceda 3 vueltas y presione START "
.SB " "
.SB +128,"sistemas"
.SB " stac 2019 "
TIEMPO
LDA #$40
STA $D40E
LDX #$E4
LDY #$5F
LDA #$06
JSR $E45C
RTS
LNEW
LDX #$04
XNEW
LDA $02C4,X
STA PFIN+1,X
DEX
BPL XNEW
LDA $0230
STA PFIN+6
LDA $0231
STA PFIN+7
LDA 559 ;$022F
STA PFIN+8
LDA 756 ;$02F4
STA PFIN+9
LDA 755 ;$02F3
STA PFIN+10
RTS
NEWL
LDX #$04
YNEW
LDA PFIN+1,X
STA $02C4,X
DEX
BPL YNEW
LDA PFIN+6
STA $0230
LDA PFIN+7
STA $0231
LDA PFIN+8
STA 559
LDA PFIN+9
STA 756
LDA PFIN+10
STA 755
RTS
NEWDL
LDX # <DLIST
LDA # >DLIST
STX $0230
STX $D402
STA $0231
STA $D403
LDA #$22
STA 559
STA $D400
LDA #224
STA 756
STA $D409
LDA #$02
STA 755
STA $D401
LDX #$04
COLORLOOP
LDA TABLA,X
STA $02C4,X
STA $D016,X
DEX
BPL COLORLOOP
LDA # <NAME
LDX # >NAME
STA DLERR
STX DLERR+1
;
; LDX #$CD
; LDY #$D7
; LDA #$06
; JSR $E45C
;
; LDX #$E5
; LDY #$CD
; LDA #$C0
; STX $0200
; STY $0201
; STA $D40E
RTS
; LDA #$00
; STA NOSEPO
LDA $02C6
STA NOSEPOR02
JMP $E45F
;
; PHA
; TXA
; PHA
; LDX NOSEPO
; LDA NOSEPO01,X
; STA $D40A
; STA $D01A
; INC NOSEPO
; PLA
; TAX
; PLA
; RTI
;NOSEPO
; .BYTE 0
;NOSEPO01
; .BYTE $52,$72,$B4,$EA,$32
NOSEPOR02
.BYTE $FF,$FF
TABLA
.BYTE $28,$CA,$00,$44,$00
CONCHAT
LDA # <MERR
LDX # >MERR
STA DLERR
STX DLERR+1
RTS
ERROR
JSR CONCHAT
LDA #$3C
STA $D302
LDA #$FD
JSR $F2B0
VUELTA
LDA 53279
CMP #$06
BNE VUELTA
JSR SEARCH
JMP GRAB
SEARCH
LDA #$34
STA $D302
LDX #$10
STX $021C
SPEED
LDX $021C
BNE SPEED
SIGUE
LDX #$FD
STX $14
BUSCA
LDA $D20F
AND #$10
BEQ SIGUE
LDX $14
BNE BUSCA
JMP NEWDL
GBYTE
CPY NBYTES
BEQ GRAB
TYA
EOR BAFER+4,Y
EOR GENDAT
INC GENDAT
INY
RTS
GRAB
LDA $D40B
BNE GRAB
LDA PFIN
BEQ BYE
GRAB2
JSR LNEW
JSR NEWDL
?GRAB
LDX #$0B
MSIO
LDA MMMSIOV,X
STA $0300,X
DEX
BPL MSIO
JSR $E459
BMI ERROR
LDA BAFER+2
CMP PFIN
BCC ERROR
BEQ RETURN
JMP ?GRAB
RETURN
LDA BAFER+255
STA NBYTES
LDX #$02
C01
LDA CONTADOR,X
CMP #$10
BNE C02
LDA #$19
STA CONTADOR,X
DEX
BPL C01
C02
DEC CONTADOR,X
JSR NEWL
DEC PFIN
LDY #$00
STY 77
JMP GBYTE
BYE
LDA PFIN+11
CMP #$00
BEQ ?BYE
DEC PFIN+11
JMP GRAB2
?BYE
JSR TIEMPO
LDA #$3C
LDX #$00
LDY #$60
STA $D302
TXS
STY BAFER
JMP ($02E0)
START
LDY NBYTES
LOOP
JSR GBYTE
STA MEMORY+1
JSR GBYTE
STA MEMORY+2
AND MEMORY+1
CMP #$FF
BEQ LOOP
JSR GBYTE
STA FINISH
JSR GBYTE
STA FINISH+1
MBTM
JSR GBYTE
MEMORY
STA $FFFF
LDA MEMORY+1
CMP FINISH
BNE OK
LDA MEMORY+2
CMP FINISH+1
BEQ VERFIN
OK
INC MEMORY+1
BNE NIM
INC MEMORY+2
NIM
JMP MBTM
VERFIN
LDA $02E2
ORA $02E3
BEQ LOOP
LDX #$F0
TXS
STY FLAGY
JSR TIEMPO
JSR NEWL
JSR RINIT
JSR LNEW
JSR SEARCH
LDY FLAGY
LDX #$00
TXS
STX $02E2
STX $02E3
JMP LOOP
RINIT
LDX #PFIN-RUTINA-1
MVRUT
LDA RUTINA,X
STA BUFAUX,X
DEX
BPL MVRUT
JMP BUFAUX
RUTINA
LDA #$3C
STA $D302
JSR ?RUTINA
LDA #$FE
STA $D301
RTS
JUMP
JMP ($02E2)
PFIN
.BYTE $00,$00,$00,$00,$00,$00
.BYTE $00,$00,$00,$00,$00,$00
RECUPERO
JSR LNEW
LDX #$0B
RECUPER02
LDA FINRECUPERO,X
STA $0300,X
DEX
BPL RECUPER02
JSR $E459
BPL RECUPERO03
LDA #$3C
STA $D302
LDA $D301
AND #$FD
STA $D301
JMP $0400
RECUPERO03
LDX #$13
RECUPERO04
LDA FINRECUPERO+2,X
RECUPERO05
STA NAME,X
DEX
BPL RECUPERO04
LDX #$02
RECUPERO06
LDA FINRECUPERO+22,X
STA CONTADOR,X
DEX
BPL RECUPERO06
LDX #$03
LDA FINRECUPERO+25
STX $41
STA PFIN
LDA FINRECUPERO+26
STA PFIN+11
LDY #$7F
LDA #$00
RECUPERO07
STA $0400,Y
DEY
BPL RECUPERO07
JSR NEWDL
JMP NEWL
FINRECUPERO
.BYTE $60,$00,$52,$40
.WORD FINRECUPERO
.BYTE $23,$00
.WORD 27
.BYTE $00,$80
; SAVE #D:MEM256K.ASM
;RECONOCEDOR DE BANCOS
;BY VITOCO
MAX = 16
BANKOS
.WORD MAX
MEMORY
.BYTE $00,$00,$00
B
.BYTE 177,161,165,169,173
.BYTE 193,197,201,205,225
.BYTE 229,233,237,129,133
.BYTE 137,141
LIMPIO.MEMORY
LDA #$00
STA MEMORY
STA MEMORY+1
STA MEMORY+2
RTS
MEMORIA
LDY #MAX
BUSCO1
LDA B,Y
STA 54017
STA 22222
DEY
BPL BUSCO1
LDY #1
BUSCO2
LDA B,Y
STA 54017
CMP 22222
BNE DISTINTO
INY
CPY #MAX+1
BNE BUSCO2
DISTINTO
LDA B
STA 54017
STY BANKOS
JSR LIMPIO.MEMORY
LDX BANKOS
DEX
DISTINTO2
CLC
LDA MEMORY
ADC #$00
STA MEMORY
LDA MEMORY+1
ADC #$40
STA MEMORY+1
LDA MEMORY+2
ADC #$00
STA MEMORY+2
DEX
BPL DISTINTO2
RTS
Y también la uso para la velocidad, ya que esta estructurada principalmente así.BANCA
.BYTE 0
CAMBIOBANCO
LDX BANCA
LDA B,X
STA $D301
CPX BANKOS
BEQ ERRORBANCOS
INX
STX BANCA
RTS
voy a adjuntar el código completo que esta en mads, programado en assembler a la antigua, que no es el mismo que el copiador anterior el ultra,,, este es un proyecto para 256k y no para 130xe.Analizando "GOONIESX.XEX"...
65535 [$FFFF] (binhead)
47872-48089 [$BB00-$BBD9] (218) PROG/DATA
738-739 [$02E2-$02E3] (2) -> 47872 [$BB00]
65535 [$FFFF] (binhead)
38656-39167 [$9700-$98FF] (512) PROG/DATA
65535 [$FFFF] (binhead)
39424-39543 [$9A00-$9A77] (120) PROG/DATA
54017-54017 [$D301-$D301] (1) $E3 "11100011"
65535 [$FFFF] (binhead)
16384-31487 [$4000-$7AFF] (15104) PROG/DATA
54017-54017 [$D301-$D301] (1) $E7 "11100111"
65535 [$FFFF] (binhead)
16384-27135 [$4000-$69FF] (10752) PROG/DATA
54017-54017 [$D301-$D301] (1) $EB "11101011"
65535 [$FFFF] (binhead)
16384-32383 [$4000-$7E7F] (16000) PROG/DATA
54017-54017 [$D301-$D301] (1) $EF "11101111"
65535 [$FFFF] (binhead)
16384-25983 [$4000-$657F] (9600) PROG/DATA
54017-54017 [$D301-$D301] (1) $FF "11111111"
65535 [$FFFF] (binhead)
24576-38655 [$6000-$96FF] (14080) PROG/DATA
65535 [$FFFF] (binhead)
5888-12031 [$1700-$2EFF] (6144) PROG/DATA
65535 [$FFFF] (binhead)
1536-1578 [$0600-$062A] (43) PROG/DATA
736-737 [$02E0-$02E1] (2) -> 1536 [$0600]
al realizar también el cambio de bancos se descontrola la velocidad, porque meto otro byte en la misma posición, pero como ambos van donde mismo no puedo jugar con la velocidad en otro lado. ahí estoy complicado. me interesa lo primero la carga del archivo,donde lo estoy pisando... porque he revisado y no me logro dar cuenta,,, son esos momentos en que te bloqueas y a veces es algo tan simple.
Re: DESEMPOLVANDO NHP 3.6 (AYUDA)
Gracias por los fuentes. Estuve mirando muy por encima y es demasiado enredado determinar qué compone el loader a nivel de fuentes, pues me llama la atención que el código referencia direcciones de memoria fuera de él. Supongo que él mismo copia porciones de si mismo hacia otros lados o que hay código que fue cargado desde otros ASM.
Además manipula PORTB ($D301), aparentemente para habilitar el BASIC en una parte del código. ¿Para qué? ¿Sólo protección anti pirateo o hay algo más ahí?
Al parecer requiere que la ROM del SO esté copiada en la RAM y modificada durante el proceso de carga, pues en otro lado desabilita la ROM, el BASIC y los bancos de memoria extendida de una, lo que se confirma dices que se te descontrola la velocidad (pero no sé si te refieres en el loader o previamente en el grabador). Si es así, el XEX del Goonies va a volver el SO a ROM 5 veces durante la carga y podría ser el motivo por el que se cuelga.
Por lo tanto, si el loader usa una copia modificada de la ROM activa en la RAM, tal vez lo que necesitas es modificar el XEX del Goonies para que en cada cambio de banco el bit 0 esté en valor 0 y no 1. Eso lo podrías hacer buscando la secuencia de bytes $01-$D3-$01-$D3-$XX-$FF-$FF con $XX cada uno de los bancos $E3, $E7, $EB, $EF y $FF, y restarle 1 dejando $XX como $E2, $E6, $EA, $EE y $FE respectivamente.
Ojo que en todo momento estoy hablando del loader, porque sí me quedó claro que el grabador sí hace uso de una versión modificada de la ROM en la RAM.
Espero te sirva...
Además manipula PORTB ($D301), aparentemente para habilitar el BASIC en una parte del código. ¿Para qué? ¿Sólo protección anti pirateo o hay algo más ahí?
Al parecer requiere que la ROM del SO esté copiada en la RAM y modificada durante el proceso de carga, pues en otro lado desabilita la ROM, el BASIC y los bancos de memoria extendida de una, lo que se confirma dices que se te descontrola la velocidad (pero no sé si te refieres en el loader o previamente en el grabador). Si es así, el XEX del Goonies va a volver el SO a ROM 5 veces durante la carga y podría ser el motivo por el que se cuelga.
Por lo tanto, si el loader usa una copia modificada de la ROM activa en la RAM, tal vez lo que necesitas es modificar el XEX del Goonies para que en cada cambio de banco el bit 0 esté en valor 0 y no 1. Eso lo podrías hacer buscando la secuencia de bytes $01-$D3-$01-$D3-$XX-$FF-$FF con $XX cada uno de los bancos $E3, $E7, $EB, $EF y $FF, y restarle 1 dejando $XX como $E2, $E6, $EA, $EE y $FE respectivamente.
Ojo que en todo momento estoy hablando del loader, porque sí me quedó claro que el grabador sí hace uso de una versión modificada de la ROM en la RAM.
Espero te sirva...
Re: DESEMPOLVANDO NHP 3.6 (AYUDA)
si es medio enredado el código,,, empezaremos desde cero nuevamente,,, porque creo que el problema esta en el cambio de bancos del copiador..
te dejare adjunto el copiador más 2 cas de prueba...
estructura del copiador:
kem2.asm (original del nhp36) - copia la rom a la ram desde $CC00 hacia adelante. esa fué mi consulta anterior sobre la copia de roma ram desde donde empezaba hasta donde llegaba.
loader.asm (modificada con nueva portada) - con los cambios realizados por ayuda del vitoco, funcional para todos los juegos.
nuevas...
hexascii.asm - nos permite poder pasar bytes a números atascii, consultada en este foro y ayuda de xt5.
memo256k.asm - rutina que nos permite poder identificar la cantidad de bancos adicionales encontrados en un atari, código generado por vitoco, desde 1 a 17 bancos.
Lo primero que realice fue modificar el dli para dejarlo personal con una nueva cara en el copiador,donde existirá dos titulos, obviamente se agrega uno que aun no esta anexado, por que empece de nuevo para ver donde se me genera el error. Primeras pruebas con dos juegos, alien ambush y draconus 3, con ambos comienza la carga y finaliza con estos y apareciendo en la pantalla jugable.
Segundo cambio fue alterar la velocidad con un codigo compartido por willysoft que nos permite poder generar la velocidad de los primeros 4 bloques a 800 baudios y desde ahi graba a 1170 baudios, prueba con ambos juegos todo ok.
este código esta al principio y para ser ejecutado siempre debe pasar $FE en $d301
Para implementar este código lo tuve que introducir desde GAUTO en donde comienza el proceso de grabación, ahí esta implementado y llamo la rutina con un jsr a BAUD.800, y antes de que se produzca el espacio para pasar a grabar el loader llamo a la rutina BAUD.1170, y despues pasa a NHPUT donde se graba la data del juego a 252 bytes por bloque, hasta ahi todo ok, grabado de ambos juegos y probados aparecen en pantalla juagable.
ahoraaaaa viene lo bueno...
Esta rutina nos permite poder realizar los cambios de bancos de memoria y se aplica en FGET donde nos carga la data en memoria desde $4000 hasta $4FFF, según sea el banco disponible, comenzando desde el 177. la carga se realiza sin problema, mostrando en pantalla cual es el portb en el cual se esta ingresando, que se muestra a través de la rutina ESPORTB, que trabaja a la par con hexascii.asm donde pasamos los bytes a atascii.
MOM almacena los valores de x y a, por que generalmente son diferentes y hay que mantenerlos y como son alterados dentro de la rutina de CAMBIOBANCO estos los guardo ahí y los vuelvo a cargar a posterior.
En BANCA se guarda el valor del banco a buscar desde 0 hasta lo encontrado, 1 al 17, siendo seteado a cero antes de ser usada la rutina. ejemplo en FGET esta seteado junto a LEN(cantidad de bytes leidos).
Aplico lo mismo pero en la parte de grabación,, en
originalmente donde esta el llamado a la rutina JSR CAMBIOBANCO esta
CLC
LDA $D301
ADC #$04
STA $D301
Ya realizados estos cambios solo alien ambush aparece en pantalla y jugable, pero Draconus que necesita un cambio de banco este no aparece al final de la carga del juego.
respecto a que deshabilita el basic, lo hace al final del código, que al presionar reset, el programa empieza de nuevo, pero los valores ya existentes no se borran, queda con los mismos internos.
te dejare adjunto el copiador más 2 cas de prueba...
estructura del copiador:
kem2.asm (original del nhp36) - copia la rom a la ram desde $CC00 hacia adelante. esa fué mi consulta anterior sobre la copia de roma ram desde donde empezaba hasta donde llegaba.
loader.asm (modificada con nueva portada) - con los cambios realizados por ayuda del vitoco, funcional para todos los juegos.
nuevas...
hexascii.asm - nos permite poder pasar bytes a números atascii, consultada en este foro y ayuda de xt5.
memo256k.asm - rutina que nos permite poder identificar la cantidad de bancos adicionales encontrados en un atari, código generado por vitoco, desde 1 a 17 bancos.
Lo primero que realice fue modificar el dli para dejarlo personal con una nueva cara en el copiador,donde existirá dos titulos, obviamente se agrega uno que aun no esta anexado, por que empece de nuevo para ver donde se me genera el error. Primeras pruebas con dos juegos, alien ambush y draconus 3, con ambos comienza la carga y finaliza con estos y apareciendo en la pantalla jugable.
Segundo cambio fue alterar la velocidad con un codigo compartido por willysoft que nos permite poder generar la velocidad de los primeros 4 bloques a 800 baudios y desde ahi graba a 1170 baudios, prueba con ambos juegos todo ok.
Código: Seleccionar todo
BAUD.800
LDA # <B00800
JSR BAUD.M1
LDA # >B00800
JMP BAUD.M2
BAUD.1170
LDA # <B01170
JSR BAUD.M1
LDA # >B01170
BAUD.M2
STA $EBA8
STA $FD46
STA $FCE1
RTS
BAUD.M1
STA $EBA3
STA $FD41
STA $FCDC
RTS
Código: Seleccionar todo
LDA #$FE
STA $D301
JSR BAUD.800
ahoraaaaa viene lo bueno...
Código: Seleccionar todo
CAMBIOBANCO
STA MOM
STX MOM+1
STY MOM+2
LDX BANCA
LDA B,X
STA $D301
CPX BANKOS
BEQ ERRORBANCOS
INX
STX BANCA
LDA MOM
LDX MOM+1
LDY MOM+2
RTS
MOM almacena los valores de x y a, por que generalmente son diferentes y hay que mantenerlos y como son alterados dentro de la rutina de CAMBIOBANCO estos los guardo ahí y los vuelvo a cargar a posterior.
En BANCA se guarda el valor del banco a buscar desde 0 hasta lo encontrado, 1 al 17, siendo seteado a cero antes de ser usada la rutina. ejemplo en FGET esta seteado junto a LEN(cantidad de bytes leidos).
Aplico lo mismo pero en la parte de grabación,, en
Código: Seleccionar todo
GBYTE
CPY BANQUEO+255
BEQ EGRAB
TYA
M
EOR BAFER,X
EOR ..........
........
BNE EXNHPIT
INC M+2
BPL EXNHPIT
PHA
JSR CAMBIOBANCO
LDA # >BAFER
STA M+2
PLA
CLC
LDA $D301
ADC #$04
STA $D301
Ya realizados estos cambios solo alien ambush aparece en pantalla y jugable, pero Draconus que necesita un cambio de banco este no aparece al final de la carga del juego.
respecto a que deshabilita el basic, lo hace al final del código, que al presionar reset, el programa empieza de nuevo, pero los valores ya existentes no se borran, queda con los mismos internos.
- Adjuntos
-
- TURBO.zip
- (283.84 KiB) Descargado 120 veces
Re: DESEMPOLVANDO NHP 3.6 (AYUDA)
Realizada la modificación y solo da problemas al final, se cuelga...no parte el juego.... antes no pasaba del 4 bloque.vitoco escribió: ↑Vie Dic 06, 2019 10:19 amPor lo tanto, si el loader usa una copia modificada de la ROM activa en la RAM, tal vez lo que necesitas es modificar el XEX del Goonies para que en cada cambio de banco el bit 0 esté en valor 0 y no 1. Eso lo podrías hacer buscando la secuencia de bytes $01-$D3-$01-$D3-$XX-$FF-$FF con $XX cada uno de los bancos $E3, $E7, $EB, $EF y $FF, y restarle 1 dejando $XX como $E2, $E6, $EA, $EE y $FE respectivamente.
realice todo de nuevo para ver si era problema de código fuente del copiador, con altos y bajos logre calibrar la velocidad y los bancos de memoria, pude jugar con ellos, también debí modificar de nuevo el loader... ¿Porque?... porque desde el archivo principal, estaba enviando mal los datos al loader,,, lo que corresponde es enviar 1.- 2 bytes $55,$55
2-. 1 byte contador low
3-. 1 byte contador high,
4*. 252 bytes de data
5-. 1 byte final.
y tanto como modifique el fuente principal, tambien tuve que modificar el loader para dejarlos compartibles, desde ahi, ya pude cargar juegos como por ejemplo alien ambush, draconus 3, estos dos apareciendo en pantalla jugable, probe con Goonies y commando 256k, ambos dieron problemas.
Lo otro,,, en los 3 primeros bloques de la carga del juego llamada como pagina 7, se realiza la carga de la rom a la ram modificada, porque se necesita para trabajar con las velocidades en la carga del loader y de la data de los bloques. yo creo que ahí esta el problema final. mas rato te envió los códigos fuentes por wazzup.
Re: DESEMPOLVANDO NHP 3.6 (AYUDA)
Estuve haciendo un poco de traza a tu .CAS y me aburrí...
Lo que pasa es que no sé por qué en Altirra no pude configurar que cargara la data rápidamente como lo hace con el .CAS grabado con SITRE, pero me imagino que Altirra se da cuenta que el SO está modificado y por eso suenan todos sus pitos y no lo hace con parche propio del SIO.
Efectivamente vi cómo cargaba los 3 primeros bloques en la página 7 y mitad de la 8, y cómo desde ahí copiaba la ROM en la RAM y después le borraba algunos pedazos de código en $ED85 y reemplazaba otro más en $ECEF, pero no tengo idea exactamente para qué (ok, sé que es para aumentar los baudios, pero no sé qué es lo que corrige del S.O.). SITRE no requiere modificar la ROM para cargar, ya que al grabar aumenta los baudios sólo a un nivel en que el S.O. normal y sin pichicatas puede detectarlo y administrarlo, pero nunca calculé a cuantos baudios lo dejé.
La página 7, después de cargar el loader, se usa como buffer para cargar los bloques, y e ndemás, vi que también se ponía algo de código en la página 8.
También vi que aún hay interrupciones en la pantalla, pero no sé para qué. Supongo que originalmente era para el arco iris, pero si no está, ¿para qué se quedó?
Sí noté que en algún momento se perdió el control y la traza comenzó a andar erráticamente fuera de la zona del loader y del S.O. No sé si se deba a que alguna interrupción se activó en algún momento crítico de la carga o que la pila de la CPU quedó con basura e hizo un RTI hacia donde no debía... no sé... no lo pude reproducir.
Tengo la sensación que la última parte del XEX está chocando con el código que el loader puso en la página 8, pues el juego carga en página 6 y después eso hace un movimiento de memoria para bajar lo que se cargó en $1700 hasta $700, pisndo la página 8.
También podría ser que lo que le falta al loader es volver a dejar la ROM como memoria oficial después de terminar la carga y antes de pasarle el control al juego.
Hay harto para entretenerse...
Lo que pasa es que no sé por qué en Altirra no pude configurar que cargara la data rápidamente como lo hace con el .CAS grabado con SITRE, pero me imagino que Altirra se da cuenta que el SO está modificado y por eso suenan todos sus pitos y no lo hace con parche propio del SIO.
Efectivamente vi cómo cargaba los 3 primeros bloques en la página 7 y mitad de la 8, y cómo desde ahí copiaba la ROM en la RAM y después le borraba algunos pedazos de código en $ED85 y reemplazaba otro más en $ECEF, pero no tengo idea exactamente para qué (ok, sé que es para aumentar los baudios, pero no sé qué es lo que corrige del S.O.). SITRE no requiere modificar la ROM para cargar, ya que al grabar aumenta los baudios sólo a un nivel en que el S.O. normal y sin pichicatas puede detectarlo y administrarlo, pero nunca calculé a cuantos baudios lo dejé.
La página 7, después de cargar el loader, se usa como buffer para cargar los bloques, y e ndemás, vi que también se ponía algo de código en la página 8.
También vi que aún hay interrupciones en la pantalla, pero no sé para qué. Supongo que originalmente era para el arco iris, pero si no está, ¿para qué se quedó?
Sí noté que en algún momento se perdió el control y la traza comenzó a andar erráticamente fuera de la zona del loader y del S.O. No sé si se deba a que alguna interrupción se activó en algún momento crítico de la carga o que la pila de la CPU quedó con basura e hizo un RTI hacia donde no debía... no sé... no lo pude reproducir.
Tengo la sensación que la última parte del XEX está chocando con el código que el loader puso en la página 8, pues el juego carga en página 6 y después eso hace un movimiento de memoria para bajar lo que se cargó en $1700 hasta $700, pisndo la página 8.
También podría ser que lo que le falta al loader es volver a dejar la ROM como memoria oficial después de terminar la carga y antes de pasarle el control al juego.
Hay harto para entretenerse...
Re: DESEMPOLVANDO NHP 3.6 (AYUDA)
Como el sistema de carga loader, esta dando problemas por el sistema que copia la rom a la ram y este produce conflictos, tengo que si o si eliminar la rom a ram desde los primeros bloques de carga que van en el casette. También cambie el editor con el que estaba trabajando por que me daba problemas y volví al mítico edit plus.
la primera etapa que se graba en el casete consta de 3 bloques donde va la roma ram y una mini portada,este bloque va en $0700, la modifique por 1 solo bloque con código simple y sin portada.
el segundo bloque quedó de la siguiente manera, no se si estará funcional, al probarlo no me da error, pero el loader no me carga
código del loader que estoy armando, que no funciona,, algo pasa aquí... por lo menos debería aparecer la pantalla.
en estos dos últimos pueden haber fallos.
y el código del loader
la primera etapa que se graba en el casete consta de 3 bloques donde va la roma ram y una mini portada,este bloque va en $0700, la modifique por 1 solo bloque con código simple y sin portada.
Código: Seleccionar todo
*= $0700
INICIO
.BYTE 0,1
.WORD INICIO
.WORD $0400
LDA #0
STA 559
STA 54272
STA 580
CLC
RTS
.SBYTE "SISTEMAS COMPUTACIONALES ATARI"
.SBYTE "BY DOGDARK 2019 & VITOCO"
Código: Seleccionar todo
*=$0400
LDX #11
COPY
LDA DATA,X
STA $0300,X
DEX
BPL COPY
JSR 58457
BPL NOJMP
JMP 58487
NOJMP
JMP NOJMP
DATA
.BYTE $60,$00,$52,$40
.BYTE $00,$07 ;indico donde inicia la pagina loader
.BYTE $23,$00
.WORD $AAAA ;byte que paso por defecto
;para el largo del loader
.BYTE $00,$80
en estos dos últimos pueden haber fallos.
y el código del loader
Código: Seleccionar todo
* = $06FE
.BYTE $55,$55
LDX #$00
TXS
STX 580
INX
STX $09
JSR RECUPERO
JMP START
DESCUENTO
.BYTE 0,0
NBYTES
.BYTE 252
DLIST
.BYTE $70,$70,$70,$42
.WORD MENSAJE
.BYTE $70,$06,$70,$02,$70,$70
.BYTE $70,$70,$06,$70,$70,$06
.BYTE $70,$06
.BYTE $70,$70,$70,$70,$02,$70
.BYTE $06
.BYTE $41
.WORD DLIST
MENSAJE
.SBYTE "PARA COMPUTADORAS XL-XE-256K BY DOGDARK"
.SBYTE " "
.SBYTE +128,"dogdark"
.SBYTE " softwares "
.SBYTE " AGRADECIMIENTOS A VITOCO Y WILLYSOFT "
.SBYTE " PRESENTA "
NAME
.SBYTE "--ACA VA EL TITULO--"
NAME2
.SBYTE "--ACA VA EL TITULO--"
.SBYTE " cargara dentro de "
CONTADOR
.SBYTE "0000 Bloques. "
.SBYTE " "
.SBYTE +128,"sistemas"
.SBYTE " stac 2019 "
MERR
.SBYTE " - E R R O R - "
.SBYTE " Retroceda 3 vueltas y presione START "
.SBYTE " "
.SBYTE +128,"sistemas"
.SBYTE " stac 2019 "
CDL
LDX # <DLIST
LDY # >DLIST
LDA $02
STX $0230
STX $D402
STY $0231
STY $D403
STA $02C6
STA $02C8
STA $D018
RTS
START
LDY NBYTES
LOOP
JMP LOOP
PFIN
.BYTE 0,0,0,0,0,0,0,0,0,0,0
RECUPERO
LDX #11
MNANB
LDA DSIO,X
STA $0300,X
DEX
BPL MNANB
JSR $E459
BPL PONDATA
JMP $E477
PONDATA
LDX #19
PONDATA2
LDA DSIO+2,X
STA NAME,X
DEX
BPL PONDATA2
LDX #19
PONDATA3
LDA DSIO+22,X
STA NAME2,X
DEX
BPL PONDATA3
LDX #3
PONDATA4
LDA DSIO+42,X
STA CONTADOR,X
DEX
BPL PONDATA4
LDA DSIO+46
STA DESCUENTO
LDA DSIO+47
STA DESCUENTO+1
LDX #3
STX $41
LDX #$22
STX 559
STX $D400
LDX #$00
TXA
CLP4
STA $0400,X
INX
BPL CLP4
STA $06FE
STA $06FF
JMP CDL
DSIO
.BYTE $60,$00,$50,$40
.WORD DSIO
.BYTE $23,$00
.WORD 48 ;26
.BYTE $00,$80
Re: DESEMPOLVANDO NHP 3.6 (AYUDA)
primer error encontrado.... estaba pasado como en 80 bytes en el loader en el display list, tuve que eliminar varias lineas .SBYTE......
Re: DESEMPOLVANDO NHP 3.6 (AYUDA)
dogdark escribió: primer error encontrado.... estaba pasado como en 80 bytes en el loader en el display list, tuve que eliminar varias lineas .SBYTE......
Pensaba que con los cambios que habías hecho al principio, ya no existían limitantes:
Spoiler: MOSTRAR
PD: Hace semanas que estoy luchando con el nhp256 (M65), para poder también hacer modificaciones al dlist
Tengo el problema que tuviste al principio con el nhp36:
Igual, cualquier ayuda es bienvenida.dogdark escribió:cual es mi problema. Que al realizar algún cambio al dlist este no se ejecuta o después no realiza carga alguna a posterior.
Re: DESEMPOLVANDO NHP 3.6 (AYUDA)
lo primero,,, en que editor estas trabajando,,,, en este proyecto estamos usando tanto wudsn o edit plus y con extensiones .asm,,, la extensión .m65 no lo pude abrir,, por eso siempre mencionen en que ide trabajan cuando compartan algún archivo, para echar una mano,,, el nhp256 ya lo desempolvé completo, si no lo he liberado, es por que algo me faltaba,, mmmm que no me recuerdo,, por algo se colgaba.... cuando me acuerde te digo.
Re: DESEMPOLVANDO NHP 3.6 (AYUDA)
Vi tu versión 2.56 "desempolvada" para Mads. Me será de mucha ayuda. Gracias!
Suerte en tu proyecto actual.
PD: El archivo .m65 que había subido, era la versión Atari Mac65 del nhp 2.56.
Suerte en tu proyecto actual.
PD: El archivo .m65 que había subido, era la versión Atari Mac65 del nhp 2.56.