Prev: 60FD Up: Map Next: 6163
613B: 1UP/ 2UP Swapper
Used by the routines at Message_Eaten and ResetPlayerData.
This routine "swaps" the data between DE and HL.
ChangePlayer 613B LD HL,$5E37 HL=ActivePlayer_Level.
613E LD DE,$5E39 DE=InactivePlayer_Level.
6141 LD B,$02 B=02 (counter).
6143 CALL ChangePlayer_Loop Call ChangePlayer_Loop.
6146 LD HL,$5E23 HL=5E23.
6149 LD DE,$5E2D DE=5E2D.
614C LD B,$0A B=0A (counter).
614E CALL ChangePlayer_Loop Call ChangePlayer_Loop.
6151 LD HL,$5E44 HL=5E44.
6154 LD DE,$5E8C DE=State_Flower.
6157 LD B,$28 B=28 (counter).
This looks complicated but it's just grabbing the data from DE, grabbing the data from HL, and writing the others data to each one.
ChangePlayer_Loop 6159 LD A,(DE) A=DE.
615A LD C,(HL) C=HL.
615B LD (HL),A Store A at HL.
615C LD A,C Store C at DE.
615D LD (DE),A
615E INC HL Increase both HL and DE by one.
615F INC DE
6160 DJNZ ChangePlayer_Loop Decrease counter by one and loop back to ChangePlayer_Loop until counter is zero.
6162 RET Return.
View the equivalent code in;
Prev: 60FD Up: Map Next: 6163