Beiträge von Wysey

geschrieben am 20.10.2016 6:19:48 in Allgemeine Hex- und ASM-Fragen
zuletzt bearbeitet von Wysey am 21.10.2016 1:26:03.
( Link )
Hey ho, ich habe eine Frage in diesem sehr weit besiedelten Forum:

Habe nach unendlichen graben auf Smwc nen Block gefunden der die Levelmusik wechseln kann:

https://www.smwcentral.net/?p=viewthread&t=81032

Code
Code

db $42

!song = #$00 ;change this for the song that you want.

JMP Mario : JMP Mario : JMP Mario
JMP Nothing : JMP Nothing
JMP Nothing : JMP Nothing
JMP Mario : JMP Mario : JMP Mario

Mario:
LDA !song ; \ Change This to the song that you want to change(If you put $00 the music will not change)
STA $1DFB ; /
Nothing:
RTL

print "Change the song of the level"


Meine Frage wäre jetzt ob das gehen würde Musik dadurch auch ab einer bestimmten Zeit zu starten z.B.
Mario berührt ab dem er 40 Sekunden im Level ist den Block; Andere Musik wird abgespielt.
Nun wenn man jetzt aber den Block nochmal berührt möchte ich nicht das der Track der davor kam ab Sekunde 0 abgespielt wird, sondern um Sekunde 40.
Und das ganze soll natürlich auch mit der 2. Melodie funktionieren.

Ich will einen dynamischen Musikwechsel sozusagen.
Könnte man das nicht so machen in dem man einfach den Track freezed und in den Zwischenspeicher reinhaut? (hab zwar keine Ahnung wie das gehen würde, weil meine Asmsküllz mal wieder nach langer Abwesenheit nicht vorhanden sind; aber ein Mann kann träumen )

Wenn das gehen würde wäre das der Übershit.
>we live in a society
geschrieben am 20.10.2016 16:53:33 in Allgemeine Hex- und ASM-Fragen
( Link )
Zitat von RPG Hacker:
AFAIK hat Addmusic keine Funktionalität, um einen Musiktrack ab Stelle X abzuspielen. Zu 100% sicher bin ich mir aber nicht, bin nicht genug in der Materie drin.


Alles klar. Ich frag mal auf Smwc oder suche mich mal wieder wund im Netz. Vielleicht weiß ja der olle S.N.N Portgott was davon. (wenn es den noch gibt... )

Edit: Addmusick hat wirklich keine solche Comments.



Halp!
Irgendwelche Vorschläge; oder alternative Lösungen?
>we live in a society
geschrieben am 21.10.2016 1:19:33 in Allgemeine Hex- und ASM-Fragen
( Link )
Zitat von RPG Hacker:
Sofern du nicht zufällig das SPC-700 programmieren kannst, sieht es da eher schlecht aus. Wirkliche Workarounds fallen mir da jetzt eigentlich keine ein, bis auf "mach das nicht".


Hab das jetzt gelöst in dem einfach 2 verschiedene Ports von der selben Meldodie reingehauen habe. Klingt zwar nicht so "elegant" wie ich es wollte jedoch ist das auch ne Lösung.
Apropo Scheißlösungen: Ich werde jetzt dann langsam mit diesem ******* Patch den ich in einen bestimmten Levelcode einfügen will Wahnsinnig:

https://www.smwcentral.net/?p=section&a=details&id=5720
Code
level10A:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Reverse Gravity
;
; This patch allows the player to have reversed gravity.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

!reversed = $60 ; The reversed gravity flag.

org $00D058
autoclean JSL fix_cape

org $00DC45
JML y_speed
NOP

org $00E346
JML fix_ram_80
NOP
NOP

org $00E46D
JML flip_mario_gfx

org $00ED14
JML fix_ceiling

org $00EE17
JML fix_ground_chk

org $00EED4
JML fix_ground
NOP

org $00F18D
JSL fix_00F18D
NOP #2

org $00F44D
JML interaction

org $00F5A3
JSL fix_fall_death
NOP
BCC $0C

org $00FD4A
JSL fix_bubble
NOP

org $00FDC3
JSL fix_splash
BRA $00

org $00FE7E
JML fix_dust

org $01A11A
JSL fix_carry
NOP

org $028830
JSL fix_028830
NOP

org $0290E5
JML fix_0290E5

org $0290F9
LDA $01
BEQ +
STZ $7D
BRA +
NOP
+

org $02912B
JML fix_02912B
NOP

org $029163
JML fix_029163
NOP

org $03B690
JSL fix_clipping
NOP

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

freecode
reset bytes

flip_offsets:
dw $000F,$0007

print "flip_gravity is located at: $", pc

flip_gravity: LDA !reversed
EOR #$01
STA !reversed

PHX
PHY
LDX #$00
LDA $19
BEQ +
LDA $73
BNE +
LDX #$02
+ REP #$20
LDA $96
LDY !reversed
BNE .ud
SEC
SBC.l flip_offsets,x
BRA +
.ud CLC
ADC.l flip_offsets,x
+ STA $96
SEP #$20
PLY
PLX
RTL

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; This section flips Mario's graphics.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

flip_mario_gfx: LDA !reversed
BNE .ud

REP #$20
LDA $80
JML $00E471

.ud LDA $0303,y
ORA #$80
STA $0303,y

REP #$20
LDA $80
SEC
SBC $DE32,x
BIT $03
BMI +
CLC
ADC #$0008
+ CLC
ADC #$0010
JML $00E475

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; This section flips the Y speed and changes the interaction table while fixing
; any bugs that arise because of these changes.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

fix_ceiling: CMP #$F9
LDY !reversed
BEQ .not_ud
BCS +

LDY $72
BEQ ++

EOR #$F0
STA $00

LDA $96
SEC
SBC $00
STA $96
BCS ++
DEC $97
++ JML $00ED37

.not_ud BCC +
JML $00ED28
+ JML $00ED18

fix_ground_chk: STA $91
LDY !reversed
BEQ .not_ud
EOR #$0F
.not_ud CMP #$08
BCC +
JML $00EE1D
+ JML $00EE3A

fix_ground: LDA !reversed
BNE .ud

LDA $96
SEC
SBC $91
JML $00EED9

.ud LDA $91
EOR #$0F
CLC
ADC $96
STA $96
BCC +
INC $97
+ JML $00EEE1

y_interaction:
dw $0008
dw $0008,$0006,$000A,$0010,$0000,$0000
dw $0008,$0006,$000A,$0010,$0000,$0000
dw $000E,$0006,$0011,$0018,$0000,$0000
dw $000E,$0006,$0011,$0018,$0000,$0000
dw $0013,$0008,$0017,$001D,$0000,$0000
dw $0013,$0008,$0017,$001D,$0000,$0000
dw $0016,$0008,$001A,$0020,$0000,$0000
dw $0016,$0008,$001A,$0020,$0000,$0000
dw $0018,$0018,$0018,$0018,$0018,$0018

interaction: INX
INX
LDA !reversed
REP #$20
BNE .ud
JML $00F451

.ud LDA $94
CLC
ADC $E830,x
STA $9A
LDA $96
CLC
ADC.l y_interaction,x
JML $00F45F

y_speed: LDY !reversed
BEQ .not_ud
LDA $7D
EOR #$FF
INC
STA $7D
.not_ud PEA $DC49
LDX #$02
JML $00DC4F

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; This section fixes bounce sprites.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

fix_00F18D: STZ $00
REP #$20
LDA $05,s
CMP #$EC89
BEQ .mario
CMP #$ED05
BEQ .mario
CMP #$EE82
BEQ .mario
SEP #$20
BRA .not_ud

- LDA !reversed
BEQ .not_ud
DEY
CPY #$02
BCC .not_ud
INY
TYA
EOR #$03
TAY
.not_ud STY $06
LDA $00F0C8,x
RTL

.mario SEP #$20
LDA $00F05C,x
CMP #$01
BNE -
INC $00
BRA -

fix_028830: LDA $00
CLC
ROR
ROR
STA $169D,y
RTL

fix_0290E5: STZ $01
LDA $1699,x
CMP #$02
BNE +
LDA $169D,x
BPL +

LDA $16C9,x
AND #$03
LDY !reversed
BNE .ud
CMP #$03
BNE +
BRA .nb

.ud CMP #$00
BNE +
.nb INC $01
+ LDA $169D,x
LSR
BCS .return
JML $0290EA
.return JML $02910B

fix_02912B: LDA $01
BEQ .return
LDA $71
BNE .return
LDY !reversed
BNE .ud
JML $02913A
.return JML $02915E

.ud LDA $16A1,x
CLC
ADC #$10
STA $96
LDA $16A9,x
ADC #$00
JML $029152

fix_029163: LDA $01
BEQ .return

LDY !reversed
BNE .ud
JML $02916C
.return JML $029182

.ud LDA #$A0
STA $7D
REP #$20
INC $96
INC $96
SEP #$20
JML $02917D

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; This section fixes various bugs.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

fix_bubble: LDY !reversed
BNE .ud
ADC $96
BRA +

.ud LDA $96
LDY $19
BEQ +
LDY $73
BNE +
CLC
ADC #$08
+ STA $1715,x
RTL

fix_cape: CLC
PHX
LDX !reversed
BNE .ud
PLX
ADC $D03C,y
RTL

.ud PLX
ADC #$0010
SEC
SBC $D03C,y
RTL

fix_carry: LDY !reversed
CLC
BNE .ud

ADC $02
BRA +

.ud LDA $02
ADC #$01
+ STA $D8,x
RTL

fix_clipping: LDY !reversed
BNE .ud
CLC
ADC $03B65C,x
.ud RTL

fix_dust: LDA !reversed
BNE .ud
LDA $96
ADC #$1A
JML $00FE82

.ud LDA $96
SEC
SBC #$04
PHX
JML $00FE8A

fix_fall_death: CLC
LDY !reversed
BNE .ud

SEP #$20
LDA $81
DEC
BMI .return
SEC
.return RTL

.ud LDA $80
ADC #$0020
SEP #$20
CLC
BPL .return
SEC
RTL

fix_ram_80: LDA $188B
AND #$00FF
LDY !reversed
BNE .ud
JML $00E34C

.ud EOR #$FFFF
CLC
ADC $96
LDY $19
CPY #$01
LDY #$01
BCS +
INC
DEY
+ CPX #$0A
BCS +
CPY $13DB
BCS +
INC
SEC
+ JML $00E360

splash_offset:
db $08,$10,$16,$16

fix_splash: LDA $96
CLC
PHY
LDY !reversed
BNE .ud
ADC $FD9D,x
BRA +

.ud ADC.l splash_offset,x
+ PLY
RTL

print "Bytes inserted: ", bytes
RTS


Asar sagt zwar wenn ich die asar_patch.asm Datei im Uberasm-Ordner patche, das der Code ohne Probleme eingefügt worden ist, jedoch wenn ich die Rom starte sehe ich nach meinem Presentslogo nur schwarz. ( aber hey es läuft die title screen musik... also so schlimm kann es auch wiederum nicht sein #geil )
Vielleicht ist wo Asar das hinhaut der Speicherplatz schon belegt...

Tja und leider gehts anscheinend nicht anders, weil ich den Patch nicht in all meinen Levels haben will.

Wie gesagt: isch habe käne Ahnung ob det noch anders jeht.

Edit: + wenn man von nem Sprite getroffen wird (egal in welchem Level man ist), oder nen Pilz bekommt etc... wird die reversed Gravity auch aktiviert; was sie aber eigentlich laut Beschreibung nicht machen sollte.
Habe das Ganze vorhin mit der normalen Einfügemethode festgestellt.

Ich will kein "Übershit gamechanging gimmick" haben.
Ich will einfach nur Blöcke haben die Gravitation umkehren wenn man in ihnen steht...
Mehr verlang ich doch nicht zefix.
>we live in a society
geschrieben am 21.10.2016 13:21:27 in Allgemeine Hex- und ASM-Fragen
( Link )
Zitat von RPG Hacker:
Frage: Wieso fügst du denn überhaupt einen Standalone-Patch über uberASM ein? Das ist keine gute Idee und kann eigentlich nur schiefgehen.

Zitat von Weisäi:
weil ich den Patch nicht in all meinen Levels haben will.


Gibt es da keine andere Möglichkeit sowas nur in einem Level zu haben?
>we live in a society
geschrieben am 21.10.2016 16:52:20 in Allgemeine Hex- und ASM-Fragen
( Link )
Zitat von RPG Hacker:

Zitat
This patch allows the player to have reversed gravity. Included are two gravity blocks and levelasm for gravity controlled by on-off blocks; read the readme for more details.

Die Beschreibung sagt doch schon, dass die Schwerkraft sich nur ändert, wenn man einen Block berührt. Dann ist es doch völlig egal, in welchem Level der Patch aktiv ist. Wenn du die Blöcke nur in ein einziges Level packst, ist die Schwerkraftänderung unterm Strich auch nur in diesem einen Level aktiv. Da brauchst du nicht groß Rumhacken oder Patches umschreiben oder sowas. Einfach Patch einfügen, Blöcke rein, fertig.


Zitat von Weisesei:
wenn man von nem Sprite getroffen wird (egal in welchem Level man ist), oder nen Pilz bekommt etc... wird die reversed Gravity auch aktiviert; was sie aber eigentlich laut Beschreibung nicht machen sollte.
Habe das Ganze vorhin mit der normalen Einfügemethode festgestellt.


Das Problem ist ja das ich dies schon so gemacht habe, aber den nervigen Bug von da oben encountered habe.
In jedem Level wo ich ein Sprite berühre (egal welches), wird die reversed Gravity aktiviert. Ich habe dazu 2 Theorien. Bei deinem Hp Patch wird man ja zurückgestoßen wenn man getroffen wird. Vielleicht verträgt sich das nicht miteinander, oder das liegt überhaupt nicht daran weil es nicht erklären würde, warum sich Gravity auch aktiviert wenn man nen Pilz einsammelt und nicht dadurch zurückgestoßen wird etc.

Oder aber auch mann muss in jedes Level wo man gravity nicht haben will einen Off Block reinhauen. Das wäre mir dann aber schon langsam zu blöd. (würde jedoch das ganze mit den Sprites trotzdem nicht erklären)

Die Blöcke habe ich bis jetzt noch nicht eingefügt, weil sich das ganze schon ohne Blöcke leider überall aktiviert.

Btw: Danke für die lange Antwort.
>we live in a society
geschrieben am 22.10.2016 21:38:51 in Allgemeine Hex- und ASM-Fragen
( Link )
So Doppelpoast weil ich ein fame boi bin.
Habe jetzt alle Orgstellen verglichen von dem Gravitypatch mit all meinen anderen Patches.

Patches die drin sind:

Patches anzeigen
Disable duck
Code
header
lorom

!Freespace = $1D8000 ;Point to freespace

org $00D604
db $80 ;Disable ducking

org $01EB16
JSL Main

org !Freespace

!CodeSize = End-Main
db "STAR"
dw !CodeSize-$01
dw !CodeSize-$01^$FFFF

Main:
LDA $73 ;\Fix Yoshi glitches
ORA $13ED ;/
RTL
End:


Wario dash
Code
; Wario Dash - by K3fka
; Give credit, please

!Freespace = $1E8000

;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Defines
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
!DashRAM1 = $1DFD ;The dash timer
!DashRAM2 = $1DFE ;The dash cooldown timer
!DashTimer = #$1F ;Time you will dash for
!Cooldown = #$30 ;Time before you can dash again
;;;;;;;;;;;;;;;;;;;;;;;;;;;;

header
lorom

;-------------
; Hex edits
;-------------

org $8E6F ; \ hack the routine neccesary to start
JSL Routine ; /
NOP #2

org !Freespace

!CodeSize = Ending-Routine ; \
db "STAR" ; | All code preservation
dw !CodeSize-$01 ; |
dw !CodeSize-$01^$FFFF ; /

Routine:
;---------------------
JSL K3fka
LDA $0F31 ; \ Restore the
STA $0F25 ; / Hijacked code.
RTL

DisableController:
STZ $15 ; \
STZ $16 ; | Keep the controller value zero, simulating no button press
STZ $17 ; | This is JSR to to because it saves space, keeping some branches working
STZ $18 ; / (BRA, BNE, BCS, etc)
RTS

K3fka:

DashCheck:
LDA !DashRAM1 ;\We're not dashing if our dash timer is zero
BEQ Check2 ;/
LDA $72 ;\
ORA $73 ; |
ORA $74 ; |
ORA $75 ; |Cancel the dash under certain conditions
ORA $1470 ; |
ORA $148F ; |
ORA $187A ; |
BNE Cancel ;/
DEC !DashRAM1 ;Decrease the dash timer
LDA #$04 ;\
STA $13EE ; |Simulate sliding
LDA #$01 ; |
STA $13ED ;/
LDA #$B3 ;\Set the pose
STA $13E0 ;/
JSR DisableController
LDA $76 ;\Dash left if we're facing left
BEQ DashL ;/
LDA #$2A ;\
STA $7B ; |
BRA WallCheck ; |Handles moving based on direction
DashL: ; |
LDA #$D5 ; |
STA $7B ;/
BRA WallCheck ;Then jump to the wall check

Check2:
LDA !DashRAM2 ;\If the cooldown timer is zero, start the dash
BEQ ButtonCheck ;/
DEC !DashRAM2 ;If not, decrease the cooldown timer
BRA End ;Jump to the end

ButtonCheck:
LDA $18 ;\
AND #$40 ; |Jump to the end if we're NOT pressing X
BEQ End ;/
LDA $19 ;\Or if we are small
BEQ End ;/

BeginDash:
LDA $72 ;\
ORA $73 ; |
ORA $74 ; |
ORA $75 ; |Cancel the dash under certain conditions
ORA $1470 ; |
ORA $148F ; |
ORA $187A ; |
BNE Cancel ;/
LDA !DashTimer ;\Set the dash timer
STA !DashRAM1 ;/
LDA !Cooldown ;\Set the cooldown timer
STA !DashRAM2 ;/
LDA #$04 ;\Play the sound effect
STA $1DFA ;/
BRA End ;Then jump to the end

WallCheck:
LDA $77 ;\
AND #$03 ; |Check to see if we're touching a wall
BEQ End ;/

Wall:
STZ $7B ;Stop moving
Cancel:
STZ !DashRAM1 ;\Zero out the timers
STZ !DashRAM2 ;/
STZ $13ED ;\Stop sliding
STZ $13EE ;/

End:
RTL

Ending:

;Done, son

Hp counter Patch

Code
;RPG-Styled HP and MP Counter Patch by RPG Hacker

header
lorom



!freespace = $238200 ; < POINT TO FREE SPACE



;;;;;;;;;;;;;;;
;Value Defines;
;;;;;;;;;;;;;;;


!IntroLevel = $E9 ;Set Intro Level Number + #$24 (Setting to $00 will disable Intro)

!LifesatStart = $04 ; These are the lives you start with minus one

!Damage = $0012 ; Set Damage a regular Sprite deals (in Hex)

!StartMaxHealth = $0096 ; Max HP to start with (in Hex)

!StartMaxMP = $0F ; Set MP to start with (in Hex)

!RefillMPAfterDeath = $00 ; Set to $00 and your MP aren't refilled when you die

!LosePowerupAfterDeath = $01 ; Set to $00 to not lose your Powerup after Death

!MushroomHeal = $0019 ; Set HP a Mushroom restores (in Hex)

!MPHeal = $04 ; Set MP, a 1UP-Mushroom recovers (in Hex)

!FireballMP = $01 ; Set MP, a Fireball takes (In Hex)

!CapeMP = $01 ; Set MP, Flying takes per second (In Hex)

!FloatRequiresMP = $00 ; Set to $00 if you don't want Floating to require MP

!SpinMP = $00 ; Set MP, Cape-Spinning takes (in Hex)

!FlyReduceSpeed = $32 ; Set, how fast your MP are reduced while Flying ($32 = 1 second)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Adress Defines (Touch only if you know what you're doing);
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


!freeram = $0060 ; Have to be TWO Bytes!

!displayram = $0062 ; Used for Status Bar

!bowserram = $0113 ; Used for removing Mario head in Bowser Battle

!checkram = $0DC4 ; Used for loading Initial Data

!powerupram = $0DC5 ; Used for saving Powerup when you die

!HurtFlag = $0670 ; $02 means Custom Damage, anything else means Normal Damage

!FlyTimer = $0671 ; Used for reducing MP while Flying

!Health = $010D ; Adress for storing current HP, have to be TWO Bytes!

!MaxHealth = $010F ; Adress for storing Maximum HP, have to be TWO Bytes!

!MP = $0111 ; Adress for storing current MP

!MaxMP = $0112 ; Adress for storing Maximum MP

!HealthSRAM = $700360 ; SRAM Adress for saving Health Data, have to be SIX Bytes!

!MaxHealthSRAM = $700366 ; SRAM Adress for saving Maximum Health Data, have to be SIX Bytes!

!MPSRAM = $70036C ; SRAM Adress for saving MP Data, have to be THREE Bytes!

!MaxMPSRAM = $70036F ; SRAM Adress for saving Maximum MP Data, have to be THREE Bytes!

!ItemSRAM = $700372 ; SRAM Adress for saving Item Data, have to be THREE Bytes!

!PowerupSRAM = $700375 ; SRAM Adress for saving Powerup Data, have to be THREE Bytes!

!LifesSRAM = $700378 ; SRAM Adress for saving Lifes



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Original SMW Routine Reroutes/Hacks;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



;org $05CF1B ;\
; nop #3 ; |
; ; | Disable Bonus Game
; ; |
;org $009E4B ; |
; nop #3 ;/


;org $028ACD ;\ Disable 1UP Increasing and Sound
; nop #8 ;/


org $008F9D ;\
jml $008FC5 ; |
nop ; |
; |
; |
org $009053 ; | Remove Bonus Stars from Status Bar
nop #3 ; |
; |
; |
org $009068 ; |
nop #3 ;/


org $00F343 ;\ Remove Yoshi Coin Counter from Status Bar
nop #3 ;/


org $008FEF ;\ Remove Mario/Luigi from Status Bar
nop #3 ;/


org $008F49 ;\ Jump to new Status Bar Routine
jml Statusbar ;/


org $00F5F8 ;\ Disable Item Box getting used when hurt
nop #$4 ;/


org $00C570 ;\ Disable Item Box getting used when pressing Select
db $80 ;/


org $009E48 ;\ Disable Item Box Reset at Game Start
nop #3 ;/


org $00F600 ;\ Disable Powerup Taking when hurt
nop #$2 ;/


org $00D129 ;\ Eliminate Powerdown Animation and jump to Flash Routine
db $EA,$EA,$EA,$80 ;/


org $009E2C ;\
jml newgame ; | Loading/starting a game from title screen
nop #2 ;/


org $00F5D5 ;\ Custom Damage Routine
jml hit ;/


org $00F5B2 ;\ When falling into a hole or lava
jsl CustomPitDeath ;/


org $00F606 ;\ Jump to Custom Death Routine
jml customdeath ;/


org $00A0E6 ;\ Refill Health when you die
jsl RefillHealth ;/


org $009BCC ;\
jsl SaveSRAMRoutine ; | Jump to new SRAM Saving Routine
nop #2 ;/


org $009D24 ;\ Jump to 2-Player-Disable Code
jsl oneplayer ;/


org $01C510 ;\
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; | Disable Items giving Status Bar Items
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;/


org $01C524 ;\ Mushroom always gives Mushroom Power
db $00,$00,$00,$00 ;/


org $01C528 ;\ Flower always gives Flower Power
db $04,$04,$04,$04 ;/


org $01C52C ;\ Star always gives Star Power
db $02,$02,$02,$02 ;/


org $01C530 ;\ Feather always gives Feather Power
db $03,$03,$03,$03 ;/


org $01C534 ;\ 1UP-Mushroom always gives 1UP-Mushroom Power
db $05,$05,$05,$05 ;/


org $01C561 ;\
jml Mushroom ; |
; |
org $01C592 ; |
jml Star ; |
; |
org $01C598 ; |
jml Feather ; | Powerup Hijacks
; |
org $01C5EC ; |
jml Flower ; |
; |
org $01C5FE ; |
jml Oneup ;/


org $009095 ;\ Fix Status Bar Item
jml ItemFix ;/


org $00D081 ;\ Hijack Fireball Routine
jml Fireball ;/


org $00D676 ;\
jml Flyroutine1 ; |
nop ; |
; |
org $00D802 ; |
jml Flyroutine2 ; |
; |
org $00D8E7 ; |
jml Flyroutine3 ; |
; | Hijack Flying Routines
org $00D062 ; |
jml Flyroutine4 ; |
; |
org $00D07B ; |
jml Flyroutine5 ; |
; |
org $00D832 ; |
jml Flyroutine6 ; |
nop #2 ;/

org $009CB0 ;\
jml InitialSetup ; | Load Intro Level
nop ;/

org $00971A ;\ Load Initial Data
jml IntroLevelSet ;/

org $009CF8 ;\
jml IntroDone ; | If Intro already played through
nop ;/

org $008C81 ;\
db $FC,$38,$FC,$38,$FC,$38,$FC,$38,$FC,$38,$42,$3C ; |
db $41,$7C,$FC,$38,$11,$38,$19,$38,$FC,$38,$FC,$38 ; |
db $FC,$38,$00,$38,$40,$38,$FC,$38,$FC,$38,$00,$38 ; |
db $FC,$38,$FC,$38,$FC,$38 ; |
; |
org $008CC1 ; | Status Bar Rearrangement
db $43,$BC,$44,$FC,$FC,$38,$16,$38,$19,$38,$FC,$38 ; |
db $FC,$38,$FC,$38,$00,$38,$40,$38,$FC,$38,$FC,$38 ; |
db $00,$38,$FC,$38,$FC,$38,$FC,$38 ; |
; |
org $008CF7 ; |
db $FC,$38,$FC,$38,$FC,$38,$FC,$38 ;/


;;;;;;;;;;;;;;;;;
;MAIN CODE START;
;;;;;;;;;;;;;;;;;


org !freespace ;\
; |
db "STAR" ; | RATS-Tag
dw codeend-oneplayer ; |
dw codeend-oneplayer^#$FFFF ;/



;;;;;;;;;;;;;;;;;
;One Player Only;
;;;;;;;;;;;;;;;;;


oneplayer:

inc $0100 ;\
lda $0100 ; |
cmp #$0A ; |
bne return ; |
inc $0100 ; |
pea $8074 ; | Disable second Player
pea $9E64 ; |
pea $9E12 ; |
jmp $00A195 ; |
; |
return: ; |
rtl ;/



;;;;;;;;;;;;;;;;;;;;;;;;;;
;Status Bar Rearrangement;
;;;;;;;;;;;;;;;;;;;;;;;;;;


Statusbar:

rep #$20 ;\
lda !Health ; |
jsl Conversion16 ; |
sep #$20 ; |
sty !displayram ; |
cpy #$00 ; |
bne write3 ; |
ldy #$FC ; |
write3: ; |
sty $0F00 ; | Write current HP to Status Bar
pha ; |
txa ; |
ora !displayram ; |
cmp #$00 ; |
bne write4 ; |
ldx #$FC ; |
write4: ; |
stx $0F01 ; |
pla ; |
sta $0F02 ;/


rep #$20 ;\
lda !MaxHealth ; |
jsl Conversion16 ; |
sep #$20 ; |
sty !displayram ; |
cpy #$00 ; |
bne write5 ; |
ldy #$FC ; |
write5: ; |
sty $0F04 ; |
pha ; | Write Maximum HP to Status Bar
txa ; |
ora !displayram ; |
cmp #$00 ; |
bne write6 ; |
ldx #$FC ; |
write6: ; |
stx $0F05 ; |
pla ; |
sta $0F06 ;/

lda !MP ;\
jsl Conversion8 ; |
sta $0F1D ; |
cpx #$00 ; | Write current MP to Status Bar
bne write1: ; |
ldx #$FC ; |
write1: ; |
stx $0F1C ;/


lda !MaxMP ;\
jsl Conversion8 ; |
sta $0F21 ; |
cpx #$00 ; | Write Maximum MP to Status Bar
bne write2: ; |
ldx #$FC ; |
write2: ; |
stx $0F20 ;/

lda $0D9B ;\
cmp #$C1 ; |
bne NoBowser ; |
lda $0DC2 ; |
cmp #$00 ; |
beq BowserSkip ; |
sta !bowserram ; |
stz $0DC2 ; |
stz $0DBC ; |
bra BowserSkip ; | Remove Mario head in Bowser Battles
; |
NoBowser: ; |
lda !bowserram ; |
cmp #$00 ; |
beq BowserSkip ; |
cmp #$55 ; |
beq BowserSkip ; |
lda !bowserram ; |
sta $0DC2 ; |
sta $0DBC ; |
stz !bowserram ;/

BowserSkip:
jml $008F5B ; Return to Main Code, skip lives and Bonus Stars to save cycles



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Starting a new game/Loading a Game;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


InitialSetup: ;\
lda #!IntroLevel ; |
sta $0109 ; |
cmp #$00 ; |
beq SkippedIntro ; |
lda #$00 ; |
sta !checkram ; | Load Intro Level at Start Up
jml $009CB5 ; |
; |
SkippedIntro: ; |
lda #$01 ; |
sta !checkram ; |
jml $009CB5 ;/


IntroDone: ;\
stz $0109 ; |
stz !checkram ; | Don't load Intro if Save File exists
lda #$8F ; |
jml $009CFD ;/


IntroLevelSet: ;\
lda !checkram ; |
cmp #$01 ; |
beq IntroWasSkipped ; |
lda $0109 ; | Check, if Intro Level was loaded
cmp #$00 ; |
beq SkipIntroLevel ; |
cmp #!IntroLevel ; |
bne NoInitialLoad ;/


IntroWasSkipped: ;\
rep #$20 ; |
lda $010A ; |
asl a ; |
tax ; |
lda #!StartMaxHealth ; |
jsl Inputcheck16 ; |
sta !freeram ; |
lda !freeram ; |
sta !MaxHealth ; |
sta !MaxHealthSRAM,x ; |
sta !Health ; |
sta !HealthSRAM,x ; |
ldx $010A ; |
sep #$20 ; |
; |
lda #!StartMaxMP ; |
jsl Inputcheck8 ; | Reset SRAM Data at New Game
sta !freeram ; |
sta !MaxMP ; |
sta !MaxMPSRAM,x ; |
sta !MP ; |
sta !MPSRAM,x ; |
; |
lda #$01 ; |
sta $0DC2 ; |
sta $0DBC ; |
sta !ItemSRAM,x ; |
sta $19 ; |
sta $0DB8 ; |
sta !PowerupSRAM,x ; |
; |
lda #!LifesatStart ; |
sta $0DBE ; |
sta $0DB4 ; |
sta !LifesSRAM,x ;/


lda !checkram ;\
cmp #$01 ; | If Intro was Skipped
beq SkipIntroLevel ;/


NoInitialLoad: ;\
lda $0109 ; |
cmp #$E9 ; |
bne ChangedIntroLevel ; |
jml $009723 ; |
ChangedIntroLevel: ; | Return to Main Code
jml $009740 ; |
; |
SkipIntroLevel: ; |
stz !checkram ; |
jml $009728 ;/



newgame: ;\
stz $0DBF ; | Set Coins at Game Start
ldx $0DB2 ; |
phx ;/

rep #$20 ;\
lda $010A ; |
asl a ; |
tax ; |
lda !MaxHealthSRAM,x ; |
sta !MaxHealth ; |
lda !HealthSRAM,x ; |
sta !Health ; |
ldx $010A ; |
sep #$20 ; |
; |
lda !MaxMPSRAM,x ; | Load SRAM Data
sta !MaxMP ; |
lda !MPSRAM,x ; |
sta !MP ; |
; |
lda !ItemSRAM,x ; |
sta $0DC2 ; |
sta $0DBC ; |
; |
lda !PowerupSRAM,x ; |
sta $19 ; |
; |
lda !LifesSRAM,x ; |
sta $0DBE ;/

plx ;\
stz $0DC1 ; | Return to Main Code
jml $009E3A ;/



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Custom Damage Handling and HP Setting;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


hit: ;\
lda $19 ; |
sta !powerupram ; |
lda !HurtFlag ; |
cmp #$02 ; | Load regular Damage
beq calculation ; |
rep #$20 ; |
lda #!Damage ; |
sta !freeram ;/

calculation: ;\
rep #$20 ; |
lda !freeram ; | Check, if Damage is a valid Input
jsl Inputcheck16 ; |
sta !freeram ;/

lda !Health ;\
cmp !freeram ; |
bcs Dealdamage ; |
jmp customdeath ; |
; |
Dealdamage: ; |
sec ; | Damage Calculation
sbc !freeram ; |
sta !Health ; |
lda !Health ; |
cmp #$0000 ; |
beq customdeath ; |
sep #$20 ; |
stz !HurtFlag ;/

lda #$38 ;\ Play Hurt Sound
sta $1DFc ;/

lda $0D9B ;\
cmp #$80 ; | Disable Knockback in Iggy/Larry Battles
beq NoKnockback ;/

lda #$D7 ;\
sta $7D ; |
; |
lda $76 ; |
bne other ; |
; |
lda #$29 ; |
sta $7B ; |
bra next ; | Knockback Code
; |
other: ; |
lda #$D7 ; |
sta $7B ; |
; |
next: ; |
; |
NoKnockback: ; |
jml $00F5DD ;/

CustomPitDeath: ;\
lda $19 ; | Save Powerup when you fall into a hole
sta !powerupram ;/


customdeath: ;\
rep #$20 ; |
lda #$0000 ; |
sta !Health ; |
sep #$20 ; |
stz !HurtFlag ; |
lda #$90 ; |
sta $7D ; |
lda #$09 ; |
sta $1DFB ; | Custom Death Routine
lda #$FF ; |
sta $0DDA ; |
lda #$09 ; |
sta $71 ; |
stz $140D ; |
lda #$30 ; |
sta $1496 ; |
sta $9D ; |
stz $1407 ; |
stz $188A ; |
rtl ;/

RefillHealth: ;\
rep #$20 ; |
lda !Health ; |
cmp #$0000 ; |
bne NoRefill ; |
lda !MaxHealth ; |
sta !Health ; |
sep #$20 ; |
lda #!RefillMPAfterDeath ; |
cmp #$00 ; |
beq NoMPRefill ; |
lda !MaxMP ; |
sta !MP ; |
NoMPRefill: ; |
lda #!LosePowerupAfterDeath ; | Reset Health and MP when you die
cmp #$00 ; |
bne ResetPowerup ; |
lda !powerupram ; |
sta $19 ; |
sta $0DB8 ; |
NoRefill: ; |
sep #$20 ; |
lda #$03 ; |
sta $44 ; |
rtl ; |
; |
ResetPowerup: ; |
lda #$01 ; |
sta $19 ; |
sta $0DB8 ; |
bra NoRefill ;/



;;;;;;;;;;;;;;;;;;;;;;
;Item Hijack Routines;
;;;;;;;;;;;;;;;;;;;;;;


Mushroom: ;\
lda #$0A ; |
sta $1DF9 ; |
rep #$20 ; |
lda #!MushroomHeal ; |
jsl Inputcheck16 ; |
sta !freeram ; |
lda !Health ; | Mushroom recovers HP
clc ; |
adc !freeram ; |
sta !Health ; |
cmp !MaxHealth ; |
bcs ReduceHealth ; |
sep #$20 ; |
jmp itemreturn ;/

ReduceHealth: ;\
lda !MaxHealth ; |
sta !Health ; | If HP are higher then Max HP, reduce them
sep #$20 ; |
jmp itemreturn ;/


Star: ;\
lda #$0A ; |
sta $1DF9 ; |
lda #$FF ; |
sta $1490 ; |
lda #$0D ; | Star Powerup
sta $1DFB ; |
asl $0DDA ; |
sec ; |
ror $0DDA ; |
jmp itemreturn ;/


Feather: ;\
lda $19 ; |
cmp #$02 ; |
beq PowerupMPHeal ; |
lda #$02 ; |
sta $19 ; |
lda #$0D ; | Feather Powerup
sta $1DF9 ; |
lda #$04 ; |
jsr $02ACE5 ; |
jsr $01C5AE ; |
inc $9D ; |
jmp itemreturn ;/


Flower: ;\
lda $19 ; |
cmp #$03 ; |
beq PowerupMPHeal ; |
lda #$20 ; |
sta $149B ; |
sta $9D ; |
lda #$04 ; |
sta $71 ; | Flower Powerup
lda #$03 ; |
sta $19 ; |
jmp $01C56F ; |
lda #$08 ; |
clc ; |
adc $1594,x ; |
jsr $02ACE5 ; |
jmp itemreturn ;/


Oneup: ;\
lda #$0A ; |
sta $1DF9 ; |
lda #!MPHeal ; | 1UP-Mushroom recovers MP
jsl Inputcheck8 ; |
sta !freeram ; |
bra addmp ;/


PowerupMPHeal: ;\
lda #$0A ; |
sta $1DF9 ; |
lda #!MPHeal ; |
lsr a ; | Recover MP if you get the same Powerup twice
jsl Inputcheck8 ; |
sta !freeram ; |
bra addmp ;/


itemreturn: ;\ Jump back to Main Code
jml $01C608 ;/


addmp: ;\
lda !MP ; |
clc ; |
adc !freeram ; |
sta !freeram ; | MP Caculation
cmp !MaxMP ; |
bcs ReduceMP ; |
sta !MP ; |
jmp itemreturn ;/

ReduceMP: ;\
lda !MaxMP ; | If MP higher then Maximum MP, reduce them
sta !MP ; |
jmp itemreturn ;/



;;;;;;;;;;;;;;;;;;;;;;;;;
;Fireball Hijack Routine;
;;;;;;;;;;;;;;;;;;;;;;;;;


Fireball: ;\
cmp #$03 ; |
bne Fireballreturn ; |
lda $73 ; |
ora $187A ; |
bne Fireballreturn ; |
bit $16 ; |
bvs Fireballjump ; |
lda $140D ; |
beq Fireballreturn ; |
inc $13E2 ; |
lda $13E2 ; |
and #$0F ; | Original Fireball Routine
bne Fireballreturn ; |
tay ; |
lda $13E2 ; |
and #$10 ; |
beq Fireballskip ; |
iny ; |
; |
Fireballskip: ; |
sty $76 ; |
; |
Fireballjump: ; |
jsl Fireballsubroutine ; |
; |
Fireballreturn: ; |
jml $00D0AD ;/


Fireballsubroutine: ;\
ldx #$09 ; |
; |
Fireballsubroutineloop: ; |
lda $170B,x ; | Original Fireball Subroutine
beq Fireballsubsubroutine ; |
dex ; |
cpx #$07 ; |
bne Fireballsubroutineloop ; |
rtl ;/


Fireballsubsubroutine: ;\
lda !MP ; |
cmp #!FireballMP ; |
bcc NoFireball ; | Check and use MP
sec ; |
sbc #!FireballMP ; |
sta !MP ;/

lda #$06 ;\
sta $1DFC ; |
lda #$0A ; |
sta $149C ; |
lda #$05 ; |
sta $170B,x ; |
lda #$30 ; |
sta $173D,x ; |
ldy $76 ; |
lda $FE94,y ; |
sta $1747,x ; |
lda $187A ; |
beq Fireballsubsubroutinejump ; |
iny ; |
iny ; |
lda $18DC ; |
beq Fireballsubsubroutinejump ; |
iny ; | Original Fireball-Subroutine Subroutine
iny ; |
; |
Fireballsubsubroutinejump: ; |
lda $94 ; |
clc ; |
adc $FE96,y ; |
sta $171F,x ; |
lda $95 ; |
adc $FE9C,y ; |
sta $1733,x ; |
lda $96 ; |
clc ; |
adc $FEA2,y ; |
sta $1715,x ; |
lda $97 ; |
adc #$00 ; |
sta $1729,x ; |
lda $13F9 ; |
sta $1779,x ; |
; |
Fireballend: ; |
rtl ;/

NoFireball: ;\
;lda $140D ; |
;cmp #$00 ; |
;bne NoSound ; | Remove Semicolons if you want Mario to make a Sound Effect
;lda #$54 ; | when he doesn't have enough MP for a Fireball
;sta $1DFC ; |
;NoSound: ; |
bra Fireballend ;/



;;;;;;;;;;;;;;;;;;;;;;;
;Flying Hijack Routine:
;;;;;;;;;;;;;;;;;;;;;;;


Flyroutine1: ;\
lda !MP ; |
cmp #!CapeMP ; |
bcc Nofly1 ; |
lda $19 ; |
cmp #$02 ; |
bne NoMPReduce ; |
lda !MP ; |
sec ; |
sbc #!CapeMP ; |
sta !MP ; |
NoMPReduce: ; |
lda #$50 ; |
sta $149F ; |
jml $00D67B ; |
; |
Nofly1: ; | Disable Take-Off when MP are too low
lda #$00 ; |
sta $149F ; |
jml $00D67B ; |
; |
; |
Flyroutine2: ; |
lda !MP ; |
cmp #!CapeMP ; |
bcc Nofly2 ; |
LDX $19 ; |
CPX #$02 ; |
jml $00D806 ; |
; |
Nofly2: ; |
lda $19 ; |
cpx #$FF ; |
jml $00D806 ;/


Flyroutine3: ;\
lda $19 ; |
cmp #$02 ; |
bne Regularjump ; |
lda #!FloatRequiresMP ; |
cmp #$00 ; |
beq Returnfloat ; |
lda !MP ; | Disable Floating when MP are too low
cmp #!CapeMP ; |
bcc Regularjump ; |
Returnfloat: ; |
jml $00D8ED ; |
; |
Regularjump: ; |
jml $00D928 ;/


Flyroutine4: ;\
lda $19 ; |
cmp #$02 ; |
bne Nospin ; |
lda !MP ; |
cmp #!SpinMP ; |
bcc Nospin ; | Disable Spin when MP are too low
lda $19 ; |
jml $00D068 ; |
; |
Nospin: ; |
lda $19 ; |
jml $00D081 ;/


Flyroutine5: ;\
lda #$04 ; |
sta $1DFC ; |
lda !MP ; | Reduce MP when Spinning
sec ; |
sbc #!SpinMP ; |
sta !MP ; |
jml $00D080 ;/


Flyroutine6: ;\
lda !MP ; |
cmp #!CapeMP ; |
bcc NoFly6 ; |
inc !FlyTimer ; |
lda !FlyTimer ; |
cmp #!FlyReduceSpeed ; |
bcc ReturnFly6 ; |
stz !FlyTimer ; |
lda !MP ; | Reduce MP while Flying
sec ; |
sbc #!CapeMP ; |
sta !MP ; |
ReturnFly6: ; |
ldx #$03 ; |
ldy $7D ; |
jml $00D836 ;/

NoFly6: ;\
stz $15 ; | Fall down if MP too low
stz $16 ; |
jml $00D836 ;/



;;;;;;;;;;;;;;;
;SRAM Handling;
;;;;;;;;;;;;;;;


SaveSRAMRoutine: ;\
jsr GetSaveFile ; |
; |
SaveScoreData: ; |
; | Save Coins to SRAM
lda $0F34,y ; | (From 6 Digit Coin Counter)
sta $70079F,x ; |
inx ; |
iny ; |
cpy #32 ; |
bcc SaveScoreData ;/

ldx $010A

lda $0DBE ;\
cmp #!LifesatStart ; |
bcc SaveMaxData ; | If Lifes are lower then Starting Lifes, save Max Data to SRAM
lda $0DBE ; |
sta !LifesSRAM,x ;/

rep #$20 ;\
lda $010A ; |
asl a ; |
tax ; |
lda !Health ; | Save Health to SRAM
sta !HealthSRAM,x ; |
lda !MaxHealth ; |
sta !MaxHealthSRAM,x ; |
ldx $010A ; |
sep #$20 ;/

lda !MP ;\
sta !MPSRAM,x ; | Save MP to SRAM
lda !MaxMP ; |
sta !MaxMPSRAM,x ;/

lda $0DC2 ;\
sta !ItemSRAM,x ; | Save Item and Powerup to SRAM
lda $19 ; |
sta !PowerupSRAM,x ;/

lda $009CCB,x ;\ Return to Main Code
rtl ;/


SaveMaxData: ;\ If Lifes are lower then Starting Lifes
sta !LifesSRAM,x ;/

rep #$20 ;\
lda $010A ; |
asl a ; |
tax ; |
lda !MaxHealth ; | Save Health to SRAM
sta !HealthSRAM,x ; |
sta !MaxHealthSRAM,x ; |
ldx $010A ; |
sep #$20 ;/

lda !MaxMP ;\
sta !MPSRAM,x ; | Save MP to SRAM
sta !MaxMPSRAM,x ;/

lda $0DC2 ;\
sta !ItemSRAM,x ; | Save Item and Powerup to SRAM
lda $19 ; |
sta !PowerupSRAM,x ;/

lda $009CCB,x ;\ Return to Main Code
rtl ;/


GetSaveFile: ;\
lda $010A ; |
asl ; |
asl ; |
asl ; | Used by Coin Saving Routine
asl ; |
asl ; |
tax ; |
ldy #0 ; |
rts ;/



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Item Fix Patch (Used for Head in Status Bar);
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


ItemFix: ;\
; |
phx ; |
php ; |
lda #$18 ; |
sta $0201,Y ; |
ldy $01 ; | Item Fix Patch (Required for Mario Head)
lda #$00 ; |
xba ; |
lda $0DC2 ; |
rep #$30 ; |
asl a ; |
tax ; |
lda ItemTable,x ; |
sta $0202,y ;/

lda #$0F18 ;\ Y and X Position of Item Box
sta $0200,y ;/

plp ;\
plx ; | Return to Main Code
jml $0090C7 ;/


ItemTable:
dw $0000,$20C2,$2A26,$2448,$240E,$6A24,$2AAE,$265C ;\ "$20CE" used to display Cheap Cheap (Mario head) with Mario's Palettes in Status Bar
dw $0000,$218A,$21E4,$28E8,$6024,$60EC,$2825,$21E4 ; |
dw $602A,$602A,$0000,$658C,$2060,$0000,$0000,$6BC2 ; |
dw $25C5,$25AB,$239D,$0000,$2B80,$2B81,$2B0A,$0000 ; |
dw $0000,$2B4B,$0000,$0000,$0000,$0000,$0000,$6580 ; |
dw $2746,$2240,$27A0,$23EA,$2382,$2BC8,$2D46,$6B40 ; |
dw $23A2,$21AA,$250A,$250C,$254A,$25A0,$0000,$6DA6 ; |
dw $678A,$A14A,$214A,$6D64,$23C8,$2FAA,$202E,$61E0 ; |
dw $6933,$236E,$252A,$A9AC,$2BE4,$6BE4,$66C0,$2BC4 ; |
dw $23CC,$6330,$6686,$6BAE,$61C7,$6385,$2240,$6BA2 ; |
dw $6D86,$2360,$29D6,$2D80,$6824,$282A,$0000,$0000 ; |
dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 ; |
dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 ; |
dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 ; |
dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 ; | Item Fix Table
dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 ; |
dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 ; |
dw $0000,$0000,$0000,$0000,$0000,$6AC8,$68C8,$66E0 ; |
dw $64C8,$6A94,$6894,$6694,$6494,$6A92,$6A92,$2892 ; |
dw $2892,$6492,$23CC,$20EB,$64AA,$64A8,$6D80,$0000 ; |
dw $6982,$6980,$2567,$0000,$2488,$6567,$0000,$28AC ; |
dw $618A,$62A6,$258E,$0000,$27A4,$2788,$24E8,$2B17 ; |
dw $2917,$6B17,$6917,$238E,$23A2,$2D81,$2900,$0000 ; |
dw $25DC,$0000,$0000,$698C,$2A2A,$6F82,$6FAA,$6F64 ; |
dw $25AC,$654A,$2B02,$0000,$6F8C,$6D6A,$6DED,$27C4 ; |
dw $27C6,$27C8,$678C,$0000,$65E8,$63C2,$67E2,$6788 ; |
dw $27CE,$6380,$20E8,$0000,$2567,$6DC4,$2BA4,$6B8C ; |
dw $6BEC,$2440,$6184,$2186,$28AE,$28AE,$29A7,$61EB ; |
dw $0000,$0000,$23EA,$2385,$23EB,$2386,$2040,$2040 ; |
dw $2161,$21EB,$2BCB,$2BCC,$21A2,$2B00,$23E2,$2160 ; |
dw $0000,$21DE,$238E,$A38E,$236C,$25C8,$0000,$2060 ; |
dw $0000,$0000,$202E,$6FC0,$6FAA,$258A,$0000,$0000 ;/



;;;;;;;;;;;;;;;;;;;;;;;;;;
;Hex To Decimal Converter;
;;;;;;;;;;;;;;;;;;;;;;;;;;


Conversion8:
ldx #$00 ;> Set X to 0
ldy #$00 ;> Set Y to 0

StartCompare1:
cmp #$64 ;\
bcc StartCompare2 ; |While A >= 100:
sbc #$64 ; |Decrease A by 100
iny ; |Increase Y by 1
bra StartCompare1 ;/

StartCompare2:
cmp #$0A ;\
bcc ReturnLong1 ; |While A >= 10:
sbc #$0A ; |Decrease A by 10
inx ; |Increase X by 1
bra StartCompare2 ;/

ReturnLong1:
rtl


Conversion16:
ldx #$00 ;> Set X to 0
ldy #$00 ;> Set Y to 0

StartCompare3:
cmp #$0064 ;\
bcc StartCompare4 ; |While A >= 100:
sbc #$0064 ; |Decrease A by 100
iny ; |Increase Y by 1
bra StartCompare3 ;/

StartCompare4:
cmp #$000A ;\
bcc ReturnLong2 ; |While A >= 10:
sbc #$000A ; |Decrease A by 10
inx ; |Increase X by 1
bra StartCompare4 ;/

ReturnLong2:
rtl



;;;;;;;;;;;;;;;;;;;;;;;;
;Check for valid Inputs;
;;;;;;;;;;;;;;;;;;;;;;;;


Inputcheck8:
cmp #$64 ;\
bcc store1 ; |
lda #$63 ; | Checks, if a value is lower then $64 (=100)
store1: ; |
rtl ;/


Inputcheck16:
cmp #$03E8 ;\
bcc store2 ; |
lda #$03E7 ; | Checks, if a value is lower then $03E8 (=1000)
store2: ; |
rtl ;/


codeend: ; RATS-Tag End

Der einzig wahre Gravitypatch der nicht will

Code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Reverse Gravity
;
; This patch allows the player to have reversed gravity.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

!reversed = $60 ; The reversed gravity flag.

org $00D058
autoclean JSL fix_cape

org $00DC45
JML y_speed
NOP

org $00E346
JML fix_ram_80
NOP
NOP

org $00E46D
JML flip_mario_gfx

org $00ED14
JML fix_ceiling

org $00EE17
JML fix_ground_chk

org $00EED4
JML fix_ground
NOP

org $00F18D
JSL fix_00F18D
NOP #2

org $00F44D
JML interaction

org $00F5A3
JSL fix_fall_death
NOP
BCC $0C

org $00FD4A
JSL fix_bubble
NOP

org $00FDC3
JSL fix_splash
BRA $00

org $00FE7E
JML fix_dust

org $01A11A
JSL fix_carry
NOP

org $028830
JSL fix_028830
NOP

org $0290E5
JML fix_0290E5

org $0290F9
LDA $01
BEQ +
STZ $7D
BRA +
NOP
+

org $02912B
JML fix_02912B
NOP

org $029163
JML fix_029163
NOP

org $03B690
JSL fix_clipping
NOP

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

freecode
reset bytes

flip_offsets:
dw $000F,$0007

print "flip_gravity is located at: $", pc

flip_gravity: LDA !reversed
EOR #$01
STA !reversed

PHX
PHY
LDX #$00
LDA $19
BEQ +
LDA $73
BNE +
LDX #$02
+ REP #$20
LDA $96
LDY !reversed
BNE .ud
SEC
SBC.l flip_offsets,x
BRA +
.ud CLC
ADC.l flip_offsets,x
+ STA $96
SEP #$20
PLY
PLX
RTL

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; This section flips Mario's graphics.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

flip_mario_gfx: LDA !reversed
BNE .ud

REP #$20
LDA $80
JML $00E471

.ud LDA $0303,y
ORA #$80
STA $0303,y

REP #$20
LDA $80
SEC
SBC $DE32,x
BIT $03
BMI +
CLC
ADC #$0008
+ CLC
ADC #$0010
JML $00E475

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; This section flips the Y speed and changes the interaction table while fixing
; any bugs that arise because of these changes.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

fix_ceiling: CMP #$F9
LDY !reversed
BEQ .not_ud
BCS +

LDY $72
BEQ ++

EOR #$F0
STA $00

LDA $96
SEC
SBC $00
STA $96
BCS ++
DEC $97
++ JML $00ED37

.not_ud BCC +
JML $00ED28
+ JML $00ED18

fix_ground_chk: STA $91
LDY !reversed
BEQ .not_ud
EOR #$0F
.not_ud CMP #$08
BCC +
JML $00EE1D
+ JML $00EE3A

fix_ground: LDA !reversed
BNE .ud

LDA $96
SEC
SBC $91
JML $00EED9

.ud LDA $91
EOR #$0F
CLC
ADC $96
STA $96
BCC +
INC $97
+ JML $00EEE1

y_interaction:
dw $0008
dw $0008,$0006,$000A,$0010,$0000,$0000
dw $0008,$0006,$000A,$0010,$0000,$0000
dw $000E,$0006,$0011,$0018,$0000,$0000
dw $000E,$0006,$0011,$0018,$0000,$0000
dw $0013,$0008,$0017,$001D,$0000,$0000
dw $0013,$0008,$0017,$001D,$0000,$0000
dw $0016,$0008,$001A,$0020,$0000,$0000
dw $0016,$0008,$001A,$0020,$0000,$0000
dw $0018,$0018,$0018,$0018,$0018,$0018

interaction: INX
INX
LDA !reversed
REP #$20
BNE .ud
JML $00F451

.ud LDA $94
CLC
ADC $E830,x
STA $9A
LDA $96
CLC
ADC.l y_interaction,x
JML $00F45F

y_speed: LDY !reversed
BEQ .not_ud
LDA $7D
EOR #$FF
INC
STA $7D
.not_ud PEA $DC49
LDX #$02
JML $00DC4F

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; This section fixes bounce sprites.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

fix_00F18D: STZ $00
REP #$20
LDA $05,s
CMP #$EC89
BEQ .mario
CMP #$ED05
BEQ .mario
CMP #$EE82
BEQ .mario
SEP #$20
BRA .not_ud

- LDA !reversed
BEQ .not_ud
DEY
CPY #$02
BCC .not_ud
INY
TYA
EOR #$03
TAY
.not_ud STY $06
LDA $00F0C8,x
RTL

.mario SEP #$20
LDA $00F05C,x
CMP #$01
BNE -
INC $00
BRA -

fix_028830: LDA $00
CLC
ROR
ROR
STA $169D,y
RTL

fix_0290E5: STZ $01
LDA $1699,x
CMP #$02
BNE +
LDA $169D,x
BPL +

LDA $16C9,x
AND #$03
LDY !reversed
BNE .ud
CMP #$03
BNE +
BRA .nb

.ud CMP #$00
BNE +
.nb INC $01
+ LDA $169D,x
LSR
BCS .return
JML $0290EA
.return JML $02910B

fix_02912B: LDA $01
BEQ .return
LDA $71
BNE .return
LDY !reversed
BNE .ud
JML $02913A
.return JML $02915E

.ud LDA $16A1,x
CLC
ADC #$10
STA $96
LDA $16A9,x
ADC #$00
JML $029152

fix_029163: LDA $01
BEQ .return

LDY !reversed
BNE .ud
JML $02916C
.return JML $029182

.ud LDA #$A0
STA $7D
REP #$20
INC $96
INC $96
SEP #$20
JML $02917D

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; This section fixes various bugs.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

fix_bubble: LDY !reversed
BNE .ud
ADC $96
BRA +

.ud LDA $96
LDY $19
BEQ +
LDY $73
BNE +
CLC
ADC #$08
+ STA $1715,x
RTL

fix_cape: CLC
PHX
LDX !reversed
BNE .ud
PLX
ADC $D03C,y
RTL

.ud PLX
ADC #$0010
SEC
SBC $D03C,y
RTL

fix_carry: LDY !reversed
CLC
BNE .ud

ADC $02
BRA +

.ud LDA $02
ADC #$01
+ STA $D8,x
RTL

fix_clipping: LDY !reversed
BNE .ud
CLC
ADC $03B65C,x
.ud RTL

fix_dust: LDA !reversed
BNE .ud
LDA $96
ADC #$1A
JML $00FE82

.ud LDA $96
SEC
SBC #$04
PHX
JML $00FE8A

fix_fall_death: CLC
LDY !reversed
BNE .ud

SEP #$20
LDA $81
DEC
BMI .return
SEC
.return RTL

.ud LDA $80
ADC #$0020
SEP #$20
CLC
BPL .return
SEC
RTL

fix_ram_80: LDA $188B
AND #$00FF
LDY !reversed
BNE .ud
JML $00E34C

.ud EOR #$FFFF
CLC
ADC $96
LDY $19
CPY #$01
LDY #$01
BCS +
INC
DEY
+ CPX #$0A
BCS +
CPY $13DB
BCS +
INC
SEC
+ JML $00E360

splash_offset:
db $08,$10,$16,$16

fix_splash: LDA $96
CLC
PHY
LDY !reversed
BNE .ud
ADC $FD9D,x
BRA +

.ud ADC.l splash_offset,x
+ PLY
RTL

print "Bytes inserted: ", bytes


Ich kann keine selben Stellen finden.

Ich habe aber herausgefunden das der Bug nur getriggered wird, wenn man Pilze ( egal ob man rot oder grün ) einsammelt oder wenn von einem Gegner getroffen wird. Alle anderen Sprites agieren nicht mit der Mechanik. Ich denke wirklich das der Grund dein Hppatch ist in Kombination mit dem Gravitypatch.
Normalerweise wird Mario ja angehalten wenn er einen Pilz konsumiert. Bei deinem patch geht es es einfach schlagartig weiter.
Außerdem denke ich; das der Stoß den man kassiert in kombination mit dem Gravitypatch auch nicht so wirklich eingeplant ist.

Was meinst du dazu?


Code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; This section fixes various bugs.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

fix_bubble: LDY !reversed
BNE .ud
ADC $96
BRA +

.ud LDA $96
LDY $19
BEQ +
LDY $73
BNE +
CLC
ADC #$08
+ STA $1715,x
RTL

fix_cape: CLC
PHX
LDX !reversed
BNE .ud
PLX
ADC $D03C,y
RTL

.ud PLX
ADC #$0010
SEC
SBC $D03C,y
RTL

fix_carry: LDY !reversed
CLC
BNE .ud

ADC $02
BRA +

.ud LDA $02
ADC #$01
+ STA $D8,x
RTL

fix_clipping: LDY !reversed
BNE .ud
CLC
ADC $03B65C,x
.ud RTL

fix_dust: LDA !reversed
BNE .ud
LDA $96
ADC #$1A
JML $00FE82

.ud LDA $96
SEC
SBC #$04
PHX
JML $00FE8A

fix_fall_death: CLC
LDY !reversed
BNE .ud

SEP #$20
LDA $81
DEC
BMI .return
SEC
.return RTL

.ud LDA $80
ADC #$0020
SEP #$20
CLC
BPL .return
SEC
RTL

fix_ram_80: LDA $188B
AND #$00FF
LDY !reversed
BNE .ud
JML $00E34C

.ud EOR #$FFFF
CLC
ADC $96
LDY $19
CPY #$01
LDY #$01
BCS +
INC
DEY
+ CPX #$0A
BCS +
CPY $13DB
BCS +
INC
SEC
+ JML $00E360

splash_offset:
db $08,$10,$16,$16

fix_splash: LDA $96
CLC
PHY
LDY !reversed
BNE .ud
ADC $FD9D,x
BRA +

.ud ADC.l splash_offset,x
+ PLY
RTL


Bin mir nicht sicher ob man da einfach nur den "!reversed" call von dem Autor bei LDY hinklatschen muss;
wenn man die Teile von deinem Code darin einfügen würde, um das Problem zu lösen. ( Der Knockbackteil etc... )
Könntest du mir helfen den "Knockback Code" und den anderen für den Pilz hier reinzukriegen?
>we live in a society
geschrieben am 23.10.2016 15:02:41 in Allgemeine Hex- und ASM-Fragen
( Link )
Zitat von RPG Hacker:
Du solltest ganz leicht rausfinden können, welche zwei Patches sich da beißen. Macht erstmal nur den Gravity-Patch auf eine cleane ROM, haue danach nacheinaner alle anderen Patches drauf und starte die ROM jedes mal kurz. Sobald der Bug auftritt, weißt du, welcher Patch das Problem verursacht.


Also jetzt bin ich mit meienem Latein dann auch so langsam am Ende. Habe das bei einer frischen Rom gemacht und bekomme entweder nen black screen (könnte am free space liegen, aber mitlerweile reichts mir dann langsam ) oder es passiert das Gravity in jedem Level aktiviert ist.

Alle Patches funktionieren soweit in Kombination; aber bei deinem + Gravity randaliert die Rom.
Wenn ich den Hppatch zuerst reinhaue ist bei mir Gravity in jedem Level aktiviert egal was passiert. Wenn ich erst den anderen Patch installiere und dann deinen, bekomme ich nen Blackscreen. ( Vielleicht wegen Freespace? Kann ich mir aber nicht vorstellen sonst würde es ja auch nicht bei Halls of Asgard funktionieren. Testrom ist auch auf 4 Mb erweitert also von daher müsste es eigentlich klappen + beide Patches haben unterschiedliche Freespace Adressen soweit ich weiß.)

Ich denke nach wie vor das es mit dem Rückstoß zusammenhängt bei Halls of Asgard, warum jetzt bei der Testrom Gravity immer aktiv ist in kombi mit deinem Patch; weiß ich ehrlich gesagt nicht. xD ( selbst wenn man jetzt nicht zurückgestoßen wird oder einen Pilz aufsammelt )
>we live in a society
geschrieben am 31.10.2016 13:17:41 in Halls of Asgard
( Link )
Der Winter naht, das Forum friert mal wieder ein und ich arbeite mal wieder weiter an meinem Hack.

So Leudde; nachdem ich wie ein Blöder die letzten Tage an meinem Leveldesign gearbeitet habe, kann ich mich nun glücklich schätzen das meiste der ersten Welt als Demo zu veröffentlichen.
Ich bräuchte jemanden der vielleicht das ganze mal "play tested", weil ich habe sicher ne menge Bugs und Shit übersehen.

DOWNLOAD:
http://bin.smwcentral.net/u/10242/Halls ... Update.zip

Pics:

Aus dem Level "Gravity Runes"


Overworld: (ist noch nicht ganz so polished/fertig. )



weitere Bilder anzeigen


Den Janzen post jibt es auch auf smwc: https://www.smwcentral.net/?p=viewthread&t=81304

Ansonsten sind die alten Bugs immer noch drin, jedoch ist das ja nur das Leveldesignupdate: das heißt jedes Level ist von Anfang an spielbar.
Am besten ihr liest mal die "Readme", wenn ihr noch weitere Fragen habt oder posted mir was nettes hier.

Habe diese Woche noch vor das "polishing update" rauszuhauen.
Det heißt: es kommen noch mal mehr Levels dazu, eine Overworld Eventkette und ich schau das ich die meisten Bugs fixe.


Ow, und nochmal danke an Rpghöcker den ich die letzten Tage genervt habe bezüglich Patches.


Servus und schönes Halloween! ( feiert das jemand hier in Deutschland überhaupt noch? )
>we live in a society
geschrieben am 04.11.2016 21:10:28 in Allgemeine Hex- und ASM-Fragen
( Link )
Ich bin schon wieder auf ein Problem gestoßen was mich an den Rand des Wahnsinns treibt.
Das Problem liegt an meinen Shatterblöcken, die brechen wenn Mario mit einem gewissen Speed dagegen rennt.
Der Punkt ist: Wenn Mario groß ist, hat Smw die Eigenschaft den unteren Block zu favorisieren, wie als würde Mario immer noch klein sein

Es gab jemanden der mal das gleiche Problem hatte wie ich: https://www.smwcentral.net/?p=viewthread&t=51417
Trotz zahlreicher Lösungsansätze konnte das Kernproblem nicht behoben werden.

Das Komische ist, das dieses Problem volkommen zufällig auftritt. Manchmal gehen beide Blöcke kaputt und manchmal nicht.
Die Blöcke Verhalten sich ja wie $130 und werden dann mit $02 ersetzt. Ich hab mir halt gedacht: gut wenn man halt durch den ersten Block ausgebremst wird (warum auch immer), dann ersetze ich halt das ganze mit etwas nicht soliden und schaue testweise was geschieht; was passiert? Genau! Es geht wieder nur der untere Block kaputt, obwohl der Player mit vollem Speed durchbrettert.

Auch ob der Player ausgebremst wird oder nicht, ist bei einzelnen Blöcken komplett zufällig. Den Speedcap runter zu setzten bringt leider auch nichts. (ist momentan auf $25 )

Impact Blockcode:
Code

!BREAKSPEED = $25 ; Geschwindigkeit mit der das ganze bricht
db $42
JMP Return : JMP MarioSide : JMP MarioCorner : JMP Return : JMP Return : JMP Return : JMP Return : JMP Return

MarioSide:
LDA $7B
BPL NoUnsign ;Ja Nein?
EOR #$FF ;2 complement
INC A

MarioCorner:
LDA $7B
BPL NoUnsign ;Ja Nein?
EOR #$FF ;2 complement
INC A


NoUnsign:
CMP #!BREAKSPEED ;brechtest
BCC Return ;return if speed not reached

PHB ;preserve current bank
LDA #$02 ;push 02
PHA
PLB ;bank = 02
LDA #$00 ;normales brechen
JSL $028663 ;blockbrechen
PLB ;restore bank

LDA #$02 ;block zum generieren
STA $9C
JSL $00BEB0 ;generiere

Return:
RTL


Die Turnblocks brechen ja auch wenn ein Chuck z.B dagegen rennt. Also müsste es auch mit Mario's Sprite gehen in der Theorie.
Der einzige Unterschied ist ja das Mario entweder 16x32 ist oder 16x16.
Vielleicht kann man das ganze ja beheben, wenn man noch eine Überprüfungsroutine reinschreibt in den Impactblock mit $00EB79 ($00EB79=interaction field), ob der Player wirklich groß ist oder nicht. Denke aber nicht das dies hier die Lösung ist.

Pls halp!
>we live in a society
geschrieben am 06.11.2016 14:14:24 in Allgemeine Hex- und ASM-Fragen
( Link )
@RpgHacker

Alles klar! Danke für die Hilfe wie immer! Ich probiere das mal die nächsten Tage aus und schau ob das klappt!
>we live in a society
geschrieben am 06.11.2016 14:16:29 in Screenshots/Videos Thread - Zeige dein Zeug h(i)er!
( Link )
Was habe ich getan?
Ich kann doch garnicht porten!

>we live in a society
geschrieben am 18.11.2016 1:25:14 in Mein SMW Hack Projekt
( Link )
Solange du nicht so wahnsinnig bist wie ich und ein komplett anders Spiel daraus machst, stehen dir alle Möglichkeiten frei.

>we live in a society
geschrieben am 23.11.2016 16:24:15 in Screenshots/Videos Thread - Zeige dein Zeug h(i)er!
( Link )
Zitat von WYE:

Ich weiß nicht, ob ich von deinem Hack schon gehört hab (wenn, dann ist das länger her), aber wow! Das sieht kaum noch nach SMW aus, auf die beste Weise. Wenn die originalen Sounds und Textgrafiken nicht wären, würde das ohne Probleme als Indie-Game durchgehen. Ich bin besonders beeindruckt von den zwei Level-Hälften, oben und unten mit verschiedenen Paletten und anderer Musik. Schicke Sache!


Vielen Dank! Das war auch mein Ziel bis jetzt; aka das zu schaffen was bisher noch nicht existiert hat. Vom Seitenoverlord Lob zu bekommen ist immer das beste, but psssst!


Zitat von Da Rpg Hackör himself:
Dann könnte man doch direkt ein PC-Spiel machen, was deutlich einfacher (und "legaler") ist.


Und weißt du was? Das mache ich jetzt auch!

Ich habe lang genug in den dunklen Kellern des Smwhackens herumgegeistert um zu wissen was ein gutes Spiel ausmacht. Ständig habe ich mir gedacht das Halls of Asgard Niemand mehr hinter dem Ofen hervorlocken könnte, wenn ich die Idee in eine moderne Spieleengine übertragen würde. Bis ich vor ein paar Tagen ein System ausgearbeitet habe wie man Rpg, Sidescrolling, Souls und andere Elemente kombinieren könnte. Eine Art Shovelknight in Rpgform, mit einem Hauch Darksouls oder Castlevania.
Abgesehen davon habe ich vor; das "Smw Movement" in gewisser weise zu übertragen, weil es meiner Meinung nach das beste von allen 2D Plattformern ist.

+ Das ganze währe easy umzusetzten in ClickteamFusion und ich könnte endlich ohne Limitations arbeiten.
Wie z.B. ein echtes 16x32 Sprite für Ragner! ( was aber nicht 16x32 ist, sondern aufgeblasen wird auf 48x96 cause modern screenreso.. derp )



Huzar!
>we live in a society
geschrieben am 05.12.2016 1:22:15 in Screenshots/Videos Thread - Zeige dein Zeug h(i)er!
( Link )
Zitat von Neidave:

naja eigentlich geht es mir gar nicht wirklich darum, etwas zu SMW passendes zu pixeln, sondern die eigenen natürlich comichaften Figuren (oder eben die eine Ruthe-Figur) zu pixeln - keine Ahnung warum ich das in SMW einfüge, aber ich hab Spaß dran also mach ich einfach weiter:


Also das Shading an sich könnte nochmal Überarbeitung gebrauchen, ansonsten wäre das vielleicht super in einem nur auf "Ruthe" basierten Level oder Hack.

Btw: ES FÜHLT SICH SO GUT AN ECHTES HDMA, AKA ECHTE FLÜSSIGE FARBVERLÄUFE BENUTZEN ZU KÖNNEN! 111 elf 111elf



>we live in a society
geschrieben am 01.01.2017 21:50:45 in Frohes neues Jahr! [2017]
( Link )
Joar euch auch alles gute. Smwhacken habe ich anscheinend auch hinter mich gebracht.
Eigene Games zu machen, macht halt doch mehr Spaß.
>we live in a society
geschrieben am 04.02.2017 23:02:14 in Wird SMW-Hacking irgendwann Sterben?
( Link )
Zitat von Robju:
Leider ja.

l ü l
>we live in a society
geschrieben am 15.09.2018 20:18:27 in Zehn Jahre smwhacking.de
( Link )
Yo die Seite gibs ja immer noch.
>we live in a society
geschrieben am 26.12.2018 3:19:47 in Zehn Jahre smwhacking.de
( Link )
Zitat von HoZweMu:
Manchmal wache ich mitten in der Nacht auf, in eiskaltem Schweiß gebadet, und erinnere mich daran, dass ich den Geburtstagsthread updaten muss.

Fun Fact über mich: Ich habe euch 2010 erzählt, dass ich 16 Jahre alt wäre, und heute bin ich 22.


Omg, der lebt ja noch!
Bitte checke deine Pm's mein Dude!
>we live in a society