Some labels

This commit is contained in:
DizzyEggg
2018-08-25 21:04:12 +02:00
parent 0d8c5b613e
commit 2b7c138cbe
7 changed files with 172 additions and 170 deletions

View File

@@ -45,14 +45,14 @@
.byte 0xa .byte 0xa
.endm .endm
.macro healthbarupdate bank .macro healthbarupdate battler
.byte 0xb .byte 0xb
.byte \bank .byte \battler
.endm .endm
.macro datahpupdate bank .macro datahpupdate battler
.byte 0xc .byte 0xc
.byte \bank .byte \battler
.endm .endm
.macro critmessage .macro critmessage
@@ -104,38 +104,38 @@
.byte 0x17 .byte 0x17
.endm .endm
.macro clearstatusfromeffect bank .macro clearstatusfromeffect battler
.byte 0x18 .byte 0x18
.byte \bank .byte \battler
.endm .endm
.macro tryfaintmon bank, param1, param2 .macro tryfaintmon battler, param1, param2
.byte 0x19 .byte 0x19
.byte \bank .byte \battler
.byte \param1 .byte \param1
.4byte \param2 .4byte \param2
.endm .endm
.macro dofaintanimation bank .macro dofaintanimation battler
.byte 0x1a .byte 0x1a
.byte \bank .byte \battler
.endm .endm
.macro cleareffectsonfaint bank .macro cleareffectsonfaint battler
.byte 0x1b .byte 0x1b
.byte \bank .byte \battler
.endm .endm
.macro jumpifstatus bank, status1, param2 .macro jumpifstatus battler, status1, param2
.byte 0x1c .byte 0x1c
.byte \bank .byte \battler
.4byte \status1 .4byte \status1
.4byte \param2 .4byte \param2
.endm .endm
.macro jumpifstatus2 bank, status2, param2 .macro jumpifstatus2 battler, status2, param2
.byte 0x1d .byte 0x1d
.byte \bank .byte \battler
.4byte \status2 .4byte \status2
.4byte \param2 .4byte \param2
.endm .endm
@@ -147,40 +147,40 @@
.4byte \param2 .4byte \param2
.endm .endm
.macro jumpifsideaffecting bank, sidestatus, param2 .macro jumpifsideaffecting battler, sidestatus, param2
.byte 0x1f .byte 0x1f
.byte \bank .byte \battler
.2byte \sidestatus .2byte \sidestatus
.4byte \param2 .4byte \param2
.endm .endm
.macro jumpifstat bank, ifflag, stat, param3, param4 .macro jumpifstat battler, ifflag, stat, param3, param4
.byte 0x20 .byte 0x20
.byte \bank .byte \battler
.byte \ifflag .byte \ifflag
.byte \stat .byte \stat
.byte \param3 .byte \param3
.4byte \param4 .4byte \param4
.endm .endm
.macro jumpifstatus3condition bank, status3, param2, param3 .macro jumpifstatus3condition battler, status3, param2, param3
.byte 0x21 .byte 0x21
.byte \bank .byte \battler
.4byte \status3 .4byte \status3
.byte \param2 .byte \param2
.4byte \param3 .4byte \param3
.endm .endm
.macro jumpiftype bank, type, param2 .macro jumpiftype battler, type, param2
.byte 0x22 .byte 0x22
.byte \bank .byte \battler
.byte \type .byte \type
.4byte \param2 .4byte \param2
.endm .endm
.macro getexp bank .macro getexp battler
.byte 0x23 .byte 0x23
.byte \bank .byte \battler
.endm .endm
.macro atk24 param0 .macro atk24 param0
@@ -325,9 +325,9 @@
.byte 0x3a .byte 0x3a
.endm .endm
.macro healthbar_update bank .macro healthbar_update battler
.byte 0x3b .byte 0x3b
.byte \bank .byte \battler
.endm .endm
.macro return .macro return
@@ -356,9 +356,9 @@
.4byte \param0 .4byte \param0
.endm .endm
.macro jumpiftype2 bank, type, param2 .macro jumpiftype2 battler, type, param2
.byte 0x42 .byte 0x42
.byte \bank .byte \battler
.byte \type .byte \type
.4byte \param2 .4byte \param2
.endm .endm
@@ -373,16 +373,16 @@
.byte 0x44 .byte 0x44
.endm .endm
.macro playanimation bank, param1, param2 .macro playanimation battler, param1, param2
.byte 0x45 .byte 0x45
.byte \bank .byte \battler
.byte \param1 .byte \param1
.4byte \param2 .4byte \param2
.endm .endm
.macro playanimation2 bank, param1, param2 .macro playanimation2 battler, param1, param2
.byte 0x46 .byte 0x46
.byte \bank .byte \battler
.4byte \param1 .4byte \param1
.4byte \param2 .4byte \param2
.endm .endm
@@ -391,9 +391,9 @@
.byte 0x47 .byte 0x47
.endm .endm
.macro playstatchangeanimation bank, param1, param2 .macro playstatchangeanimation battler, param1, param2
.byte 0x48 .byte 0x48
.byte \bank .byte \battler
.byte \param1 .byte \param1
.byte \param2 .byte \param2
.endm .endm
@@ -412,25 +412,25 @@
.byte 0x4b .byte 0x4b
.endm .endm
.macro getswitchedmondata bank .macro getswitchedmondata battler
.byte 0x4c .byte 0x4c
.byte \bank .byte \battler
.endm .endm
.macro switchindataupdate bank .macro switchindataupdate battler
.byte 0x4d .byte 0x4d
.byte \bank .byte \battler
.endm .endm
.macro switchinanim bank, dontclearsubstitutebit .macro switchinanim battler, dontclearsubstitutebit
.byte 0x4e .byte 0x4e
.byte \bank .byte \battler
.byte \dontclearsubstitutebit .byte \dontclearsubstitutebit
.endm .endm
.macro jumpifcantswitch bank, param1 .macro jumpifcantswitch battler, param1
.byte 0x4f .byte 0x4f
.byte \bank .byte \battler
.4byte \param1 .4byte \param1
.endm .endm
@@ -440,20 +440,20 @@
.4byte \param1 .4byte \param1
.endm .endm
.macro switchhandleorder bank, param1 .macro switchhandleorder battler, param1
.byte 0x51 .byte 0x51
.byte \bank .byte \battler
.byte \param1 .byte \param1
.endm .endm
.macro switchineffects bank .macro switchineffects battler
.byte 0x52 .byte 0x52
.byte \bank .byte \battler
.endm .endm
.macro trainerslidein bank .macro trainerslidein battler
.byte 0x53 .byte 0x53
.byte \bank .byte \battler
.endm .endm
.macro playse param0 .macro playse param0
@@ -466,18 +466,18 @@
.2byte \param0 .2byte \param0
.endm .endm
.macro playfaintcry bank .macro playfaintcry battler
.byte 0x56 .byte 0x56
.byte \bank .byte \battler
.endm .endm
.macro atk57 .macro atk57
.byte 0x57 .byte 0x57
.endm .endm
.macro returntoball bank .macro returntoball battler
.byte 0x58 .byte 0x58
.byte \bank .byte \battler
.endm .endm
.macro handlelearnnewmove param0, param1, param2 .macro handlelearnnewmove param0, param1, param2
@@ -497,18 +497,18 @@
.4byte \param0 .4byte \param0
.endm .endm
.macro hitanimation bank .macro hitanimation battler
.byte 0x5c .byte 0x5c
.byte \bank .byte \battler
.endm .endm
.macro getmoneyreward .macro getmoneyreward
.byte 0x5d .byte 0x5d
.endm .endm
.macro atk5E bank .macro atk5E battler
.byte 0x5e .byte 0x5e
.byte \bank .byte \battler
.endm .endm
.macro swapattackerwithtarget .macro swapattackerwithtarget
@@ -520,14 +520,14 @@
.byte \param0 .byte \param0
.endm .endm
.macro drawpartystatussummary bank .macro drawpartystatussummary battler
.byte 0x61 .byte 0x61
.byte \bank .byte \battler
.endm .endm
.macro hidepartystatussummary bank .macro hidepartystatussummary battler
.byte 0x62 .byte 0x62
.byte \bank .byte \battler
.endm .endm
.macro jumptorandomattack param0 .macro jumptorandomattack param0
@@ -535,20 +535,20 @@
.byte \param0 .byte \param0
.endm .endm
.macro statusanimation bank .macro statusanimation battler
.byte 0x64 .byte 0x64
.byte \bank .byte \battler
.endm .endm
.macro status2animation bank, status2 .macro status2animation battler, status2
.byte 0x65 .byte 0x65
.byte \bank .byte \battler
.4byte \status2 .4byte \status2
.endm .endm
.macro chosenstatusanimation bank, param1, param2 .macro chosenstatusanimation battler, param1, param2
.byte 0x66 .byte 0x66
.byte \bank .byte \battler
.byte \param1 .byte \param1
.4byte \param2 .4byte \param2
.endm .endm
@@ -565,9 +565,9 @@
.byte 0x69 .byte 0x69
.endm .endm
.macro removeitem bank .macro removeitem battler
.byte 0x6a .byte 0x6a
.byte \bank .byte \battler
.endm .endm
.macro atknameinbuff1 .macro atknameinbuff1
@@ -586,14 +586,14 @@
.byte 0x6e .byte 0x6e
.endm .endm
.macro makevisible bank .macro makevisible battler
.byte 0x6f .byte 0x6f
.byte \bank .byte \battler
.endm .endm
.macro recordlastability bank .macro recordlastability battler
.byte 0x70 .byte 0x70
.byte \bank .byte \battler
.endm .endm
.macro buffermovetolearn .macro buffermovetolearn
@@ -605,23 +605,23 @@
.4byte \param0 .4byte \param0
.endm .endm
.macro hpthresholds bank .macro hpthresholds battler
.byte 0x73 .byte 0x73
.byte \bank .byte \battler
.endm .endm
.macro hpthresholds2 bank .macro hpthresholds2 battler
.byte 0x74 .byte 0x74
.byte \bank .byte \battler
.endm .endm
.macro useitemonopponent .macro useitemonopponent
.byte 0x75 .byte 0x75
.endm .endm
.macro various bank, param1 .macro various battler, param1
.byte 0x76 .byte 0x76
.byte \bank .byte \battler
.byte \param1 .byte \param1
.endm .endm
@@ -642,10 +642,10 @@
.4byte \param0 .4byte \param0
.endm .endm
.macro tryhealhalfhealth param0, bank .macro tryhealhalfhealth param0, battler
.byte 0x7b .byte 0x7b
.4byte \param0 .4byte \param0
.byte \bank .byte \battler
.endm .endm
.macro trymirrormove .macro trymirrormove
@@ -773,9 +773,9 @@
.4byte \param0 .4byte \param0
.endm .endm
.macro updatestatusicon bank .macro updatestatusicon battler
.byte 0x98 .byte 0x98
.byte \bank .byte \battler
.endm .endm
.macro setmist .macro setmist
@@ -1112,14 +1112,14 @@
.4byte \param0 .4byte \param0
.endm .endm
.macro switchoutabilities bank .macro switchoutabilities battler
.byte 0xe2 .byte 0xe2
.byte \bank .byte \battler
.endm .endm
.macro jumpifhasnohp bank, param1 .macro jumpifhasnohp battler, param1
.byte 0xe3 .byte 0xe3
.byte \bank .byte \battler
.4byte \param1 .4byte \param1
.endm .endm
@@ -1215,112 +1215,112 @@
.endm .endm
@ various command changed to more readable macros @ various command changed to more readable macros
.macro cancelmultiturnmoves bank .macro cancelmultiturnmoves battler
various \bank, VARIOUS_CANCEL_MULTI_TURN_MOVES various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES
.endm .endm
.macro setmagiccoattarget bank .macro setmagiccoattarget battler
various \bank, VARIOUS_SET_MAGIC_COAT_TARGET various \battler, VARIOUS_SET_MAGIC_COAT_TARGET
.endm .endm
.macro getifcantrunfrombattle bank .macro getifcantrunfrombattle battler
various \bank, VARIOUS_IS_RUNNING_IMPOSSIBLE various \battler, VARIOUS_IS_RUNNING_IMPOSSIBLE
.endm .endm
.macro getmovetarget bank .macro getmovetarget battler
various \bank, VARIOUS_GET_MOVE_TARGET various \battler, VARIOUS_GET_MOVE_TARGET
.endm .endm
.macro various4 bank .macro various4 battler
various \bank, 4 various \battler, 4
.endm .endm
.macro resetintrimidatetracebits bank .macro resetintrimidatetracebits battler
various \bank, VARIOUS_RESET_INTIMIDATE_TRACE_BITS various \battler, VARIOUS_RESET_INTIMIDATE_TRACE_BITS
.endm .endm
.macro updatechoicemoveonlvlup bank .macro updatechoicemoveonlvlup battler
various \bank, VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP various \battler, VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP
.endm .endm
.macro various7 bank .macro various7 battler
various \bank, 7 various \battler, 7
.endm .endm
.macro various8 bank .macro various8 battler
various \bank, 8 various \battler, 8
.endm .endm
.macro various9 bank .macro various9 battler
various \bank, 9 various \battler, 9
.endm .endm
.macro various10 bank .macro various10 battler
various \bank, 10 various \battler, 10
.endm .endm
.macro various11 bank .macro various11 battler
various \bank, 11 various \battler, 11
.endm .endm
.macro various12 bank .macro various12 battler
various \bank, 12 various \battler, 12
.endm .endm
.macro forfeityesnobox bank .macro forfeityesnobox battler
various \bank, VARIOUS_EMIT_YESNOBOX various \battler, VARIOUS_EMIT_YESNOBOX
.endm .endm
.macro various14 bank .macro various14 battler
various \bank, 14 various \battler, 14
.endm .endm
.macro various15 bank .macro various15 battler
various \bank, 15 various \battler, 15
.endm .endm
.macro various16 bank .macro various16 battler
various \bank, 16 various \battler, 16
.endm .endm
.macro various17 bank .macro various17 battler
various \bank, 17 various \battler, 17
.endm .endm
.macro waitcry bank .macro waitcry battler
various \bank, VARIOUS_WAIT_CRY various \battler, VARIOUS_WAIT_CRY
.endm .endm
.macro returnopponentmon1toball bank .macro returnopponentmon1toball battler
various \bank, VARIOUS_RETURN_OPPONENT_MON1 various \battler, VARIOUS_RETURN_OPPONENT_MON1
.endm .endm
.macro returnopponentmon2toball bank .macro returnopponentmon2toball battler
various \bank, VARIOUS_RETURN_OPPONENT_MON2 various \battler, VARIOUS_RETURN_OPPONENT_MON2
.endm .endm
.macro various21 bank .macro volumedown
various \bank, 21 various BS_ATTACKER, VARIOUS_VOLUME_DOWN
.endm .endm
.macro various22 bank .macro volumeup
various \bank, 22 various BS_ATTACKER, VARIOUS_VOLUME_UP
.endm .endm
.macro various23 bank .macro various23 battler
various \bank, 23 various \battler, 23
.endm .endm
.macro various24 bank .macro various24 battler
various \bank, 24 various \battler, 24
.endm .endm
.macro setoutcomeonteleport bank .macro setoutcomeonteleport battler
various \bank, VARIOUS_SET_TELEPORT_OUTCOME various \battler, VARIOUS_SET_TELEPORT_OUTCOME
.endm .endm
.macro playtrainerdefeatbgm bank .macro playtrainerdefeatbgm battler
various \bank, VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC various \battler, VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC
.endm .endm
@ helpful macros @ helpful macros
@@ -1332,12 +1332,12 @@
setbyte cEFFECT_CHOOSER \effect setbyte cEFFECT_CHOOSER \effect
.endm .endm
.macro chosenstatus1animation bank, status .macro chosenstatus1animation battler, status
chosenstatusanimation \bank 0x0 \status chosenstatusanimation \battler 0x0 \status
.endm .endm
.macro chosenstatus2animation bank, status .macro chosenstatus2animation battler, status
chosenstatusanimation \bank 0x1 \status chosenstatusanimation \battler 0x1 \status
.endm .endm
.macro sethword dst, value .macro sethword dst, value
@@ -1380,12 +1380,12 @@
jumpifhalfword CMP_NOT_EQUAL, gCurrentMove, \move, \jumpptr jumpifhalfword CMP_NOT_EQUAL, gCurrentMove, \move, \jumpptr
.endm .endm
.macro jumpifstatus3 bank, status, jumpptr .macro jumpifstatus3 battler, status, jumpptr
jumpifstatus3condition \bank, \status, 0x0, \jumpptr jumpifstatus3condition \battler, \status, 0x0, \jumpptr
.endm .endm
.macro jumpifnostatus3 bank, status, jumpptr .macro jumpifnostatus3 battler, status, jumpptr
jumpifstatus3condition \bank, \status, 0x1, \jumpptr jumpifstatus3condition \battler, \status, 0x1, \jumpptr
.endm .endm
.macro jumpifmovehadnoeffect jumpptr .macro jumpifmovehadnoeffect jumpptr

View File

@@ -4481,18 +4481,18 @@ BattleScript_82DB89D::
setbyte gBattleCommunication + 1, 0x0 setbyte gBattleCommunication + 1, 0x0
end2 end2
BattleScript_82DB8BE:: BattleScript_ArenaTurnBeginning::
waitcry BS_ATTACKER waitcry BS_ATTACKER
various21 BS_ATTACKER volumedown
playse 0x109 playse SE_HANTEI1
pause 0x8 pause 0x8
playse 0x109 playse SE_HANTEI1
various14 BS_ATTACKER various14 BS_ATTACKER
various16 8 various16 8
various17 8 various17 8
pause 0x40 pause 0x40
various15 BS_ATTACKER various15 BS_ATTACKER
various22 BS_ATTACKER volumeup
end2 end2
BattleScript_82DB8E0:: BattleScript_82DB8E0::
@@ -4509,7 +4509,7 @@ BattleScript_82DB8F3::
waitstate waitstate
makevisible BS_OPPONENT1 makevisible BS_OPPONENT1
waitstate waitstate
various21 BS_ATTACKER volumedown
playse 0x109 playse 0x109
pause 0x8 pause 0x8
playse 0x109 playse 0x109

View File

@@ -256,7 +256,7 @@ extern const u8 BattleScript_82DB87D[];
extern const u8 BattleScript_82DB881[]; extern const u8 BattleScript_82DB881[];
extern const u8 BattleScript_82DB887[]; extern const u8 BattleScript_82DB887[];
extern const u8 BattleScript_82DB89D[]; extern const u8 BattleScript_82DB89D[];
extern const u8 BattleScript_82DB8BE[]; extern const u8 BattleScript_ArenaTurnBeginning[];
extern const u8 BattleScript_82DB8E0[]; extern const u8 BattleScript_82DB8E0[];
extern const u8 BattleScript_82DB8F3[]; extern const u8 BattleScript_82DB8F3[];
extern const u8 BattleScript_82DB973[]; extern const u8 BattleScript_82DB973[];

View File

@@ -71,6 +71,8 @@
#define VARIOUS_WAIT_CRY 18 #define VARIOUS_WAIT_CRY 18
#define VARIOUS_RETURN_OPPONENT_MON1 19 #define VARIOUS_RETURN_OPPONENT_MON1 19
#define VARIOUS_RETURN_OPPONENT_MON2 20 #define VARIOUS_RETURN_OPPONENT_MON2 20
#define VARIOUS_VOLUME_DOWN 21
#define VARIOUS_VOLUME_UP 22
#define VARIOUS_SET_TELEPORT_OUTCOME 25 #define VARIOUS_SET_TELEPORT_OUTCOME 25
#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26 #define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26

View File

@@ -1606,22 +1606,22 @@ static void OpponentHandleChoosePokemon(void)
{ {
s32 chosenMonId; s32 chosenMonId;
if (*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) == 6) if (*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) == PARTY_SIZE)
{ {
chosenMonId = GetMostSuitableMonToSwitchInto(); chosenMonId = GetMostSuitableMonToSwitchInto();
if (chosenMonId == 6) if (chosenMonId == PARTY_SIZE)
{ {
s32 bank1, bank2, firstId, lastId; s32 battler1, battler2, firstId, lastId;
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{ {
bank2 = bank1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); battler2 = battler1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
} }
else else
{ {
bank1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); battler1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
bank2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); battler2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
} }
if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000)) if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
@@ -1639,8 +1639,8 @@ static void OpponentHandleChoosePokemon(void)
for (chosenMonId = firstId; chosenMonId < lastId; chosenMonId++) for (chosenMonId = firstId; chosenMonId < lastId; chosenMonId++)
{ {
if (GetMonData(&gEnemyParty[chosenMonId], MON_DATA_HP) != 0 if (GetMonData(&gEnemyParty[chosenMonId], MON_DATA_HP) != 0
&& chosenMonId != gBattlerPartyIndexes[bank1] && chosenMonId != gBattlerPartyIndexes[battler1]
&& chosenMonId != gBattlerPartyIndexes[bank2]) && chosenMonId != gBattlerPartyIndexes[battler2])
{ {
break; break;
} }
@@ -1650,7 +1650,7 @@ static void OpponentHandleChoosePokemon(void)
else else
{ {
chosenMonId = *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler); chosenMonId = *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler);
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = 6; *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
} }

View File

@@ -3929,7 +3929,7 @@ static void TryDoEventsBeforeFirstTurn(void)
if (gBattleTypeFlags & BATTLE_TYPE_ARENA) if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
{ {
StopCryAndClearCrySongs(); StopCryAndClearCrySongs();
BattleScriptExecute(BattleScript_82DB8BE); BattleScriptExecute(BattleScript_ArenaTurnBeginning);
} }
} }
@@ -4019,7 +4019,7 @@ void BattleTurnPassed(void)
if (gBattleTypeFlags & BATTLE_TYPE_PALACE) if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
BattleScriptExecute(BattleScript_82DB881); BattleScriptExecute(BattleScript_82DB881);
else if (gBattleTypeFlags & BATTLE_TYPE_ARENA && gBattleStruct->field_DA == 0) else if (gBattleTypeFlags & BATTLE_TYPE_ARENA && gBattleStruct->field_DA == 0)
BattleScriptExecute(BattleScript_82DB8BE); BattleScriptExecute(BattleScript_ArenaTurnBeginning);
} }
u8 IsRunningFromBattleImpossible(void) u8 IsRunningFromBattleImpossible(void)

View File

@@ -6750,10 +6750,10 @@ static void atk76_various(void)
} }
} }
break; break;
case 21: case VARIOUS_VOLUME_DOWN:
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x55); m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x55);
break; break;
case 22: case VARIOUS_VOLUME_UP:
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100); m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
break; break;
case 23: case 23: