|
| Autor | Mensaje |
---|
ErikAlay557 Blue Para-Troopa
Posts : 265
| Tema: Problema con código ASM Lun Sep 17, 2012 9:39 am | |
| Hola. Bueno, quería pedirle a alguien que sepa ASM que cheque este código de bloque porque no me está sirviendo. - Spoiler:
;Color easily customizable: ;Change LDA #$04 to the following ; #$04 = Yellow, #$06 = Blue, #$08 = Red, #$0A Green. ;Example, change LDA #$04 to LDA #$08 to make a Red Yoshi.
JMP MarioBelow : JMP MarioAbove : JMP MarioSide : JMP SpriteV : JMP SpriteH : JMP MarioCape : JMP MarioFireBall
MarioBelow: MarioCape: LDA $7E187A ;Load Mario is on Yoshi flag CMP #$01 ;Compare if he is BEQ Yoshi ;Branch to Yoshi if it is 01 or greater (because 02, etc. gives the same result) RTL ;Else, return.
Yoshi: ;| LDA $7E13C7 ;\Load Yoshi color flag CMP #$04 ; |See if it is actually yellow. BNE Color ; |If not, advance to "Color" RTL ;/Else, return
Color: ;| LDA #$04 ;\Load Yellow Color STA $7E13C7 ; |Store to Yoshi color flag MarioAbove: MarioSide: SpriteV: SpriteH: MarioFireBall: RTL ;/And return
|
| | | Lumiel Iggy Koopa
Posts : 1519
| Tema: Re: Problema con código ASM Lun Sep 17, 2012 11:33 am | |
| Yo lo veo bien... ¿cuál es el problema? |
| | | ErikAlay557 Blue Para-Troopa
Posts : 265
| Tema: Re: Problema con código ASM Lun Sep 17, 2012 12:24 pm | |
| Es lo que se. Mira, ni siquiera aparece y no cumple su función (cambiar el color de Yoshi) |
| | | Lumiel Iggy Koopa
Posts : 1519
| Tema: Re: Problema con código ASM Dom Oct 07, 2012 12:21 pm | |
| Creo que el bloque sólo cambiará de color al yoshi si le das por abajo intenta mover estos label antes de "MarioAbove:"
MarioBellow: MarioSide: |
| | | ErikAlay557 Blue Para-Troopa
Posts : 265
| Tema: Re: Problema con código ASM Dom Oct 07, 2012 12:49 pm | |
| LOL me faltó MarioAbove. Bueno, más problemas - Spoiler:
dcb "INIT" RTL
dcb "MAIN" RTL
LDA $0DC1 BNE Yoshi RTS
Yoshi: LDA $187A BCS Color RTS
Color: LDA $13C7 CMP #$04 BEQ Return LDA #$04 STA $13C7 RTS
Return: RTS
Me ayudan? |
| | | Lumiel Iggy Koopa
Posts : 1519
| Tema: Re: Problema con código ASM Dom Oct 07, 2012 12:52 pm | |
| - Código:
-
dcb "INIT" RTL
dcb "MAIN" JSR LABEL <----- añade un label y usa JSR para ejecutar la rutina RTL
LABEL LDA $0DC1 <----- añade un label BNE Yoshi RTS
Yoshi: LDA $187A BCS Color RTS
Color: LDA $13C7 CMP #$04 BEQ Return LDA #$04 STA $13C7 RTS
Return: RTS Eso debería ser suficiente
Última edición por Book of Blood el Dom Oct 07, 2012 12:56 pm, editado 1 vez |
| | | ErikAlay557 Blue Para-Troopa
Posts : 265
| Tema: Re: Problema con código ASM Dom Oct 07, 2012 12:55 pm | |
| Yoshi madafaka del mal! No sirve aún. Aún asi, gracias Nox |
| | | Lumiel Iggy Koopa
Posts : 1519
| Tema: Re: Problema con código ASM Dom Oct 07, 2012 1:07 pm | |
| - Código:
-
dcb "INIT" RTL
dcb "MAIN" JSR LABEL ; <----- añade un label y usa JSR para ejecutar la rutina RTL
LABEL LDA $0DC1 ; <----- añade un label BNE Color RTS
Color: LDA $13C7 CMP #$04 BEQ Return LDA #$04 STA $13C7 Return RTS
Corregí algunas cosas, creo que este código debería funcionar bien |
| | | ErikAlay557 Blue Para-Troopa
Posts : 265
| Tema: Re: Problema con código ASM Vie Oct 12, 2012 11:40 am | |
| Más problemas - Código:
-
;Its something
dcb "INIT" RTL
dcb "MAIN" JSR CODE RTL
;=================================== ; SPRITE ROUTINE (e.e) ;===================================
CODE: JSR gfx JSL $01A7DC BCC NoContact
NoContact: RTL
LDA #15 STA $0DBF LDA #$01 STA $1DFC
STZ $14C8,x
gfx: JSR GET_DRAW_INFO
LDA $00 STA $0300,y
LDA $01 STA $0301,y
LDA #$C2 STA $0302,y LDA #$28 ORA $64 STA $0303,y
INY INY INY INY
LDY #$02 LDA #$00 JSL $01B7B3 RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; GET_DRAW_INFO ; This is a helper for the graphics routine. It sets off screen flags, and sets up ; variables. It will return with the following: ; ; Y = index to sprite OAM ($300) ; $00 = sprite x position relative to screen boarder ; $01 = sprite y position relative to screen boarder ; ; It is adapted from the subroutine at $03B760 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SPR_T1 dcb $0C,$1C SPR_T2 dcb $01,$02
GET_DRAW_INFO STZ $186C,x ; reset sprite offscreen flag, vertical STZ $15A0,x ; reset sprite offscreen flag, horizontal LDA $E4,x ; \ CMP $1A ; | set horizontal offscreen if necessary LDA $14E0,x ; | SBC $1B ; | BEQ ON_SCREEN_X ; | INC $15A0,x ; /
ON_SCREEN_X LDA $14E0,x ; \ XBA ; | LDA $E4,x ; | REP #$20 ; | SEC ; | SBC $1A ; | mark sprite invalid if far enough off screen CLC ; | ADC.W #$0040 ; | CMP.W #$0180 ; | SEP #$20 ; | ROL A ; | AND #$01 ; | STA $15C4,x ; / BNE INVALID ; LDY #$00 ; \ set up loop: LDA $1662,x ; | AND #$20 ; | if not smushed (1662 & 0x20), go through loop twice BEQ ON_SCREEN_LOOP ; | else, go through loop once INY ; / ON_SCREEN_LOOP LDA $D8,x ; \ CLC ; | set vertical offscreen if necessary ADC SPR_T1,y ; | PHP ; | CMP $1C ; | (vert screen boundry) ROL $00 ; | PLP ; | LDA $14D4,x ; | ADC #$00 ; | LSR $00 ; | SBC $1D ; | BEQ ON_SCREEN_Y ; | LDA $186C,x ; | (vert offscreen) ORA SPR_T2,y ; | STA $186C,x ; | ON_SCREEN_Y DEY ; | BPL ON_SCREEN_LOOP ; /
LDY $15EA,x ; get offset to sprite OAM LDA $E4,x ; \ SEC ; | SBC $1A ; | $00 = sprite x position relative to screen boarder STA $00 ; / LDA $D8,x ; \ SEC ; | SBC $1C ; | $01 = sprite y position relative to screen boarder STA $01 ; / RTS ; return
INVALID PLA ; \ return from *main gfx routine* subroutine... PLA ; | ...(not just this subroutine) RTS ; / Ayuda? |
| | | Lumiel Iggy Koopa
Posts : 1519
| Tema: Re: Problema con código ASM Lun Oct 22, 2012 11:38 am | |
| - Código:
-
BCC NoContact
NoContact: RTL Bien... aquí hay un problema. Según el código, sin importar si hay o no contacto te manda exactamente al mismo punto lol Además te manda a un RTL en lugar de un RTS... Otra cosa, yo te recomendaría mover el "NoContact: RTS" abajo del "STZ $14C8,x" |
| | | ErikAlay557 Blue Para-Troopa
Posts : 265
| Tema: Re: Problema con código ASM Sáb Ene 26, 2013 7:47 pm | |
| Perdón por revivir tema pero vi innecesario hacer uno nuevo. Alguien sabe qué debo hacer para que cambiar las tilas del Birdo de smb2 y el carryable egg de [Tienes que estar registrado y conectado para ver este vínculo]? Se los agradeceré mucho |
| | | Lumiel Iggy Koopa
Posts : 1519
| Tema: Re: Problema con código ASM Sáb Ene 26, 2013 8:25 pm | |
| Primero para el huevo ve a donde dice lo siguiente en el ASM y cambia los dos valores que aparecen enfrente de "TILEMAP" por la tila que vayas a usar: - Código:
-
TILEMAP dcb $8C,$8C
SPRITE_GRAPHICS JSR GET_DRAW_INFO ; sets y = OAM offset LDA $157C,x ; \ $02 = direction STA $02 ; / LDA $14 ; \ LSR A ; | LSR A ; | LSR A ; | CLC ; | ADC $15E9 ; | AND #$01 ; | STA $03 ; | $03 = index to frame start (0 or 1) PHX ; / Si quieres que el huevo use la primera página de gráficos debes editar el CFG. Ahora para el birdo hay que hacer casi lo mismo. En el ASM ve a una parte que es como la siguiente y cambia igual los valores del TILEMAP: - Código:
-
TILEMAP dcb $8E,$AE,$8E,$EE,$CE,$AE dcb $E2,$AE,$E0,$AE VERT_DISP dcb $F0,$00,$F0,$00,$F0,$00 dcb $F0,$00,$F0,$00 PROPERTIES dcb $40,$00 ;xyppccct format SUB_GFX JSR GET_DRAW_INFO ; after: Y = index to sprite tile map ($300) ; $00 = sprite x position relative to screen boarder ; $01 = sprite y position relative to screen boarder LDA $1602,x ; \ ASL A ; | $03 = index to frame start (frame to show * 2 tile per frame) STA $03 ; / LDA $157C,x ; \ $02 = sprite direction STA $02 ; / PHX ; push sprite index
Editar cada tila es medio difícil, aquí te dejo una tabla para describir qué valor es para cada tila: Número de TILEMAP | Tila correspondiente | TILEMAP dcb $8E,$AE,$8E,$EE,$CE,$AE dcb $E2,$AE,$E0,$AE | Cabeza (Frame 1) | TILEMAP dcb $8E,$AE,$8E,$EE,$CE,$AE dcb $E2,$AE,$E0,$AE | Cuerpo (Frame 1) | TILEMAP dcb $8E,$AE,$8E,$EE,$CE,$AE dcb $E2,$AE,$E0,$AE | Cabeza (Frame 2) | TILEMAP dcb $8E,$AE,$8E,$EE,$CE,$AE dcb $E2,$AE,$E0,$AE | Cuerpo (Frame 2) | TILEMAP dcb $8E,$AE,$8E,$EE,$CE,$AE dcb $E2,$AE,$E0,$AE | Cabeza (Lanzando un huevo) | TILEMAP dcb $8E,$AE,$8E,$EE,$CE,$AE dcb $E2,$AE,$E0,$AE | Cuerpo (Lanzando un huevo) | TILEMAP dcb $8E,$AE,$8E,$EE,$CE,$AE dcb $E2,$AE,$E0,$AE | Cabeza (golpeado?) | TILEMAP dcb $8E,$AE,$8E,$EE,$CE,$AE dcb $E2,$AE,$E0,$AE | Cuerpo (golpeado?) | TILEMAP dcb $8E,$AE,$8E,$EE,$CE,$AE dcb $E2,$AE,$E0,$AE | Cabeza (Muerto?) | TILEMAP dcb $8E,$AE,$8E,$EE,$CE,$AE dcb $E2,$AE,$E0,$AE | Cuerpo (muerto?) |
|
| | | lx5 Moderador Global
Posts : 2169
| Tema: Re: Problema con código ASM Sáb Ene 26, 2013 9:06 pm | |
| A nox se le paso algo, explicar el moño o liston de birdo, que es el siguiente codigo: - Código:
-
Tilemap: dcb $C2,$BD Cambia el tilemap ese del moño y ya esta, es casi lo mismo que lo de nox: El $C2 es el cuadro de 16x16 del moño de birdo, el $BD es otra parte del moño de birdo, es de 8x8. __________________________________________________ Espacio en renta.
|
| | | ErikAlay557 Blue Para-Troopa
Posts : 265
| Tema: Re: Problema con código ASM Dom Ene 27, 2013 7:58 am | |
| Gracias LX, ya no tendrá al Magikoopa arriba Por cierto, alguien sabe que agregar al archivo ASM para que la batalla termine (se que está el level ender pero hay 2 thwomps en la batalla)? |
| | | Contenido patrocinado
| Tema: Re: Problema con código ASM | |
| |
| | | |
Temas similares | |
|
| Permisos de este foro: | No puedes responder a temas en este foro.
| |
| |
| Donaciones |
Quieres ayudar al foro? Siéntete libre de donar la cantidad que quieras!
|
|