Asm ?

geschrieben am 18.10.2010 0:10:25
( Link )
Leute ich habe hier ein Code gefunden und wollte mal fragen wie ich den in den hack reinkriege '?
oder sieht so überhaupt ein asm code aus ?
Code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; test_1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; sprite data
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; init JSL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

dcb "INIT"
RTL

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; main sprite JSL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


dcb "MAIN"
PHB ; \
PHK ; | main sprite function, just calls local subroutine
PLB ; |
JSR START_HB_CODE ; |
PLB ; |
RTL ; /


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; main sprite routine
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

RETURN RTS
START_HB_CODE JSR SUB_GFX
LDA $14C8,x
CMP #$08
BNE RETURN
LDA $9D
BNE RETURN
JSR SUB_OFF_SCREEN_X3 ; only process sprite while on screen

LDA #$F8
STA $B6,x
JSL $01802A
JSL $01A7DC
RTS


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; graphics routine
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SUB_GFX JSR GET_DRAW_INFO ; after: Y = index to sprite tile map ($300)
LDA $01
STA $0301,y
LDA $00 ; \ tile y position = sprite y location ($01) + tile displacement
STA $0300,y ; /
LDA #$8E
STA $0302,y


LDA $15F6,x ; | get palette info
ORA $64 ; | put in level properties
STA $0303,y ; / store tile properties

LDY #$02 ; \Draw Mode
LDA #$00 ; | A = number of tiles drawn - 1
JSL $01B7B3 ; / don't draw if offscreen
RTS ; return

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; $B760 - graphics routine helper - shared
; sets off screen flags and sets index to OAM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;org $03B75C

TABLE1 dcb $0C,$1C
TABLE2 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 TABLE1,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 TABLE2,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 ; /

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; off screen processing code - shared
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;org $03B83B

TABLE3 dcb $40,$B0
TABLE6 dcb $01,$FF
TABLE4 dcb $30,$C0,$A0,$80,$A0,$40,$60,$B0
TABLE5 dcb $01,$FF,$01,$FF,$01,$00,$01,$FF

SUB_OFF_SCREEN_X0 LDA #$06 ; \ entry point of routine determines value of $03
BRA STORE_03 ; |
SUB_OFF_SCREEN_X1 LDA #$04 ; |
BRA STORE_03 ; |
SUB_OFF_SCREEN_X2 LDA #$02 ; |
STORE_03 STA $03 ; |
BRA START_SUB ; |
SUB_OFF_SCREEN_X3 STZ $03 ; /

START_SUB JSR SUB_IS_OFF_SCREEN ; \ if sprite is not off screen, return
BEQ RETURN_2 ; /
LDA $5B ; \ goto VERTICAL_LEVEL if vertical level
AND #$01 ; |
BNE VERTICAL_LEVEL ; /
LDA $D8,x ; \
CLC ; |
ADC #$50 ; | if the sprite has gone off the bottom of the level...
LDA $14D4,x ; | (if adding 0x50 to the sprite y position would make the high byte >= 2)
ADC #$00 ; |
CMP #$02 ; |
BPL ERASE_SPRITE ; / ...erase the sprite
LDA $167A,x ; \ if "process offscreen" flag is set, return
AND #$04 ; |
BNE RETURN_2 ; /
LDA $13 ; \
AND #$01 ; |
ORA $03 ; |
STA $01 ; |
TAY ; /
LDA $1A
CLC
ADC TABLE4,y
ROL $00
CMP $E4,x
PHP
LDA $1B
LSR $00
ADC TABLE5,y
PLP
SBC $14E0,x
STA $00
LSR $01
BCC LABEL20
EOR #$80
STA $00
LABEL20 LDA $00
BPL RETURN_2
ERASE_SPRITE LDA $14C8,x ; \ if sprite status < 8, permanently erase sprite
CMP #$08 ; |
BCC KILL_SPRITE ; /
LDY $161A,x
CPY #$FF
BEQ KILL_SPRITE
LDA #$00
STA $1938,y
KILL_SPRITE STZ $14C8,x ; erase sprite
RETURN_2 RTS ; return

VERTICAL_LEVEL LDA $167A,x ; \ if "process offscreen" flag is set, return
AND #$04 ; |
BNE RETURN_2 ; /
LDA $13 ; \ only handle every other frame??
LSR A ; |
BCS RETURN_2 ; /
AND #$01
STA $01
TAY
LDA $1C
CLC
ADC TABLE3,y
ROL $00
CMP $D8,x
PHP
LDA.W $001D
LSR $00
ADC TABLE6,y
PLP
SBC $14D4,x
STA $00
LDY $01
BEQ LABEL22
EOR #$80
STA $00
LABEL22 LDA $00
BPL RETURN_2
BMI ERASE_SPRITE

SUB_IS_OFF_SCREEN LDA $15A0,x ; \ if sprite is on screen, accumulator = 0
ORA $186C,x ; |
RTS ; / return
#
geschrieben am 18.10.2010 0:44:27
( Link )
Ist ein Sprite, also mittels Spritetool (lag der .asm Datei eine .cfg Datei bei? Weil wenn nicht, musst du eine neue .cfg Datei machen, um es mittels SpriteTool einzufügen)

Mehr zum Spritetool siehe Spritetool Tutorial im Tutorialbereich
Wie kritisch man doch gegenüber dem System wird, wenn man älter wird...
geschrieben am 18.10.2010 2:00:17
( Link )
also sprites einfügen kann ich ja ;D wollte nur wissen ob jemand was genaueres damit anfangen kann
#
geschrieben am 18.10.2010 9:38:47
( Link )
So füg ihn doch ein und schau, was passiert.

Der Code-Tag ist übrigens nicht nur zur Dekoration da.
geschrieben am 18.10.2010 12:39:15
( Link )
also der .asm datein lag jetzt keine .cfg datei zum einfügen dabei ;l .....
#
geschrieben am 18.10.2010 12:43:44
( Link )
Dann musst Du wohl in den sauren Apfel beißen und die CFG selber machen!
*Sprichwort des Tages*

Overworld designen ist mein Job
Meine Rechtschreibfehler sind gewollt und taktisch klug gesetzt
8Bit YT Channel
geschrieben am 18.10.2010 13:32:35
( Link )
Woher hast du das Sprite überhaupt, wenn weder eine Beschreibung noch eine CFG dabei war? Irgendwem aus dem File Bin geklaut oder von irgendeinem japanischen Uploader gezogen?
-Das quadratische Rad neu erfinden-
Mit das quadratische Rad neu erfinden (englisch Reinventing the square wheel) bezeichnet man die Bereitstellung einer schlechten Lösung, wenn eine gute Lösung bereits existiert.

-Slowsort-
Slowsort (von engl. slow: langsam) ist ein langsamer, rekursiver Sortieralgorithmus, der nach dem Prinzip Vervielfache und kapituliere (engl. Multiply and surrender, eine Parodie auf Teile und herrsche) arbeitet.

geschrieben am 18.10.2010 15:24:13
( Link )
der sprite war so wie er da steht auf einer japanischen website. btw cfg selbst erstellen .... wie geht das :l ?
#
geschrieben am 18.10.2010 16:00:34
( Link )
Nimm eine existierende .cfg-Datei und benenne sie um. Natürlich musst du im CFG-Editor noch den Namen der zugehörigen ASM-Datei ändern.
geschrieben am 18.10.2010 16:29:24
( Link )
Möchte an dieser Stelle noch mal darauf hinweisen, dass die Dateien aus gewissen, japanischen Uploadern nicht zum Download von außenstehenden Personen gedacht sind.
-Das quadratische Rad neu erfinden-
Mit das quadratische Rad neu erfinden (englisch Reinventing the square wheel) bezeichnet man die Bereitstellung einer schlechten Lösung, wenn eine gute Lösung bereits existiert.

-Slowsort-
Slowsort (von engl. slow: langsam) ist ein langsamer, rekursiver Sortieralgorithmus, der nach dem Prinzip Vervielfache und kapituliere (engl. Multiply and surrender, eine Parodie auf Teile und herrsche) arbeitet.

geschrieben am 18.10.2010 17:02:07
( Link )
hab jetzt die cfg datei von dem sprite cannonball genommen aber da standen ncoh sachen drin wie AA und 1E und sowas ;l kann man das so stehen lassen ?
#
geschrieben am 18.10.2010 17:03:32
( Link )
Zitat von RPG Hacker:
Möchte an dieser Stelle noch mal darauf hinweisen, dass die Dateien aus gewissen, japanischen Uploadern nicht zum Download von außenstehenden Personen gedacht sind.

Ich glaube, das will er nicht hören.

Overworld designen ist mein Job
Meine Rechtschreibfehler sind gewollt und taktisch klug gesetzt
8Bit YT Channel
geschrieben am 18.10.2010 18:02:05
( Link )
Zitat von Mawwo7:
hab jetzt die cfg datei von dem sprite cannonball genommen aber da standen ncoh sachen drin wie AA und 1E und sowas ;l kann man das so stehen lassen ?


Normalerweise schon aber mehr als schiefgehen kann es nicht, es auszuprobieren.


Visit us - <!-- m --><a class="postlink" href="http://www.veare.eu">http://www.veare.eu</a><!-- m -->
geschrieben am 18.10.2010 19:17:31
( Link )
Hmm Ich habe den Sprite mal getestet, doch was soll so episch an dem sein? Das ist ein langsamer "Classic"Goomba, der anstatt zermatscht zu werden, episch vom Screen fällt...naja (Allerdings interessiert mich dieses runterfallen...das wäre geilo für Sprites die verglitcht aussehen, wenn man die mit Bob-Omb zerstört)
Code
01
36
10 80 24 01 18 00
00 00
Blooper2.asm
0


Öffne deine .cfg Datei mit Word/anderer Texteditor, und überschreibe es hiermit, wenns hilfreich ist(PS: Da wo Blooper2.asm steht, sollst du eintragen, wie die .asm Datei heißt, die du hast)
Wie kritisch man doch gegenüber dem System wird, wenn man älter wird...