diff options
| author | PikalaxALT <PikalaxALT@gmail.com> | 2015-10-19 16:49:29 -0400 | 
|---|---|---|
| committer | PikalaxALT <PikalaxALT@gmail.com> | 2015-10-19 16:49:29 -0400 | 
| commit | 6c25592b8c43afe9780968da88f9b06cbb526e72 (patch) | |
| tree | 30449a14d2a1158ce785f4d92da3ab01c11d0f27 /engine | |
| parent | 0a244e043c83dff064d7e3ec054a587c7f999d0d (diff) | |
So very jumb
Diffstat (limited to 'engine')
| -rw-r--r-- | engine/battle_start.asm | 20 | ||||
| -rw-r--r-- | engine/credits.asm | 16 | ||||
| -rw-r--r-- | engine/pack.asm | 48 | ||||
| -rw-r--r-- | engine/pokedex.asm | 44 | ||||
| -rw-r--r-- | engine/scripting.asm | 18 | ||||
| -rw-r--r-- | engine/title.asm | 84 | 
6 files changed, 119 insertions, 111 deletions
| diff --git a/engine/battle_start.asm b/engine/battle_start.asm index e78bfad3b..430904552 100644 --- a/engine/battle_start.asm +++ b/engine/battle_start.asm @@ -13,7 +13,7 @@ Predef_StartBattle: ; 8c20f  	ld [hl], $1  .loop -	ld a, [wcf63] +	ld a, [wJumptableEntryIndexBuffer]  	bit 7, a  	jr nz, .done  	call FlashyTransitionToBattle @@ -72,7 +72,7 @@ Function8c26d: ; 8c26d  	call DelayFrame  	xor a  	ld [hBGMapMode], a -	ld hl, wcf63 +	ld hl, wJumptableEntryIndexBuffer  	xor a  rept 2  	ld [hli], a @@ -146,7 +146,7 @@ INCBIN "gfx/overworld/trainer_battle_pokeball_tiles.2bpp"  FlashyTransitionToBattle: ; 8c314 -	ld a, [wcf63] +	ld a, [wJumptableEntryIndexBuffer]  	ld e, a  	ld d, 0  	ld hl, .jumptable @@ -230,7 +230,7 @@ StartTrainerBattle_DetermineWhichAnimation: ; 8c365 (23:4365)  	ld hl, .StartingPoints  	add hl, de  	ld a, [hl] -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ret  ; 8c38f (23:438f) @@ -242,11 +242,11 @@ StartTrainerBattle_DetermineWhichAnimation: ; 8c365 (23:4365)  StartTrainerBattle_Finish: ; 8c393 (23:4393)  	call ClearSprites  	ld a, $80 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ret  StartTrainerBattle_NextScene: ; 8c39c (23:439c) -	ld hl, wcf63 +	ld hl, wJumptableEntryIndexBuffer  	inc [hl]  	ret @@ -331,7 +331,7 @@ StartTrainerBattle_SineWave: ; 8c408 (23:4408)  .end  	ld a, $20 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ret  .DoSineWave: ; 8c419 (23:4419) @@ -416,7 +416,7 @@ endr  	xor a  	ld [hBGMapMode], a ; $ff00+$d4  	ld a, $20 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ret  ; 8c490 (23:4490) @@ -540,7 +540,7 @@ StartTrainerBattle_SpeckleToBlack: ; 8c58f (23:458f)  	xor a  	ld [hBGMapMode], a ; $ff00+$d4  	ld a, $20 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ret  .BlackOutRandomTile: ; 8c5b8 (23:45b8) @@ -836,7 +836,7 @@ StartTrainerBattle_ZoomToBlack: ; 8c768 (23:4768)  .done  	ld a, $20 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ret  ; 8c792 (23:4792) diff --git a/engine/credits.asm b/engine/credits.asm index dabdb6ea1..c6b0b9d56 100644 --- a/engine/credits.asm +++ b/engine/credits.asm @@ -124,7 +124,7 @@ Function109847:: ; 109847  	jr z, .asm_10984f  	ld a, $40  .asm_10984f -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ld a, [rSVBK]  	push af @@ -225,7 +225,7 @@ Function1098fd: ; 1098fd  	ld a, [hJoypadDown]  	and $1  	ret z -	ld a, [wcf63] +	ld a, [wJumptableEntryIndexBuffer]  	bit 7, a  	ret  ; 109908 @@ -234,7 +234,7 @@ Function109908: ; 109908  	ld a, [hJoypadDown]  	and $2  	ret z -	ld a, [wcf63] +	ld a, [wJumptableEntryIndexBuffer]  	bit 6, a  	ret z  	ld hl, CreditsPos @@ -255,7 +255,7 @@ Function109908: ; 109908  ; 109926  Function109926: ; 109926 -	ld a, [wcf63] +	ld a, [wJumptableEntryIndexBuffer]  	and $f  	ld e, a  	ld d, 0 @@ -287,12 +287,12 @@ Jumptable_109937: ; 109937 (42:5937)  Function109951: ; 109951 (42:5951) -	ld hl, wcf63 +	ld hl, wJumptableEntryIndexBuffer  	inc [hl]  	ret  Function109956: ; 109956 (42:5956) -	ld hl, wcf63 +	ld hl, wJumptableEntryIndexBuffer  	ld a, [hl]  	and $f0  	ld [hl], a @@ -348,7 +348,7 @@ Function1099a3: ; 1099a3 (42:59a3)  ParseCredits: ; 1099aa -	ld hl, wcf63 +	ld hl, wJumptableEntryIndexBuffer  	bit 7, [hl]  	jp nz, .done @@ -488,7 +488,7 @@ endr  .end  ; Stop execution. -	ld hl, wcf63 +	ld hl, wJumptableEntryIndexBuffer  	set 7, [hl]  	ld a, $20  	ld [MusicFade], a diff --git a/engine/pack.asm b/engine/pack.asm index 408930823..310be0fea 100644 --- a/engine/pack.asm +++ b/engine/pack.asm @@ -5,7 +5,7 @@ Pack: ; 10000  	call Function1068a  .loop  	call JoyTextDelay -	ld a, [wcf63] +	ld a, [wJumptableEntryIndexBuffer]  	bit 7, a  	jr nz, .done  	call Function10026 @@ -21,7 +21,7 @@ Pack: ; 10000  ; 10026  Function10026: ; 10026 -	ld a, [wcf63] +	ld a, [wJumptableEntryIndexBuffer]  	ld hl, Jumptable_10030  	call Function1086b  	jp [hl] @@ -47,7 +47,7 @@ Function10046: ; 10046 (4:4046)  	ld [hBGMapMode], a ; $ff00+$d4  	call Function10955  	ld a, [wcf64] -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	call Function10a40  	ret @@ -486,7 +486,7 @@ Function10355: ; 10355 (4:4355)  	and a  	jr z, Function1032d  	ld a, $a -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ret  ; 10364 (4:4364) @@ -605,7 +605,7 @@ Function103fd: ; 103fd  	call PrintText  	jr .asm_10427  .asm_10453 -	ld a, [wcf63] +	ld a, [wJumptableEntryIndexBuffer]  	push af  	ld a, [wcf64]  	push af @@ -618,7 +618,7 @@ Function103fd: ; 103fd  	pop af  	ld [wcf64], a  	pop af -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  .asm_10475  	pop af  	ld [Options], a @@ -652,7 +652,7 @@ BattlePack: ; 10493  	call Function1068a  .asm_1049b  	call JoyTextDelay -	ld a, [wcf63] +	ld a, [wJumptableEntryIndexBuffer]  	bit 7, a  	jr nz, .asm_104ad  	call Function104b9 @@ -668,7 +668,7 @@ BattlePack: ; 10493  ; 104b9  Function104b9: ; 104b9 -	ld a, [wcf63] +	ld a, [wJumptableEntryIndexBuffer]  	ld hl, Jumptable_104c3  	call Function1086b  	jp [hl] @@ -694,7 +694,7 @@ Function104d9: ; 104d9 (4:44d9)  	ld [hBGMapMode], a ; $ff00+$d4  	call Function10955  	ld a, [wcf64] -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	call Function10a40  	ret @@ -922,7 +922,7 @@ Function10671: ; 10671 (4:4671)  	jr z, asm_10684  asm_1067e: ; 1067e (4:467e)  	ld a, $a -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ret  asm_10684: ; 10684 (4:4684)  	xor a @@ -937,7 +937,7 @@ Function10689: ; 10689  Function1068a: ; 1068a  	xor a -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ld a, [wd0d6]  	and $3  	ld [wcf65], a @@ -955,7 +955,7 @@ Function1068a: ; 1068a  Function106a5: ; 106a5  	xor a  	ld [hBGMapMode], a -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ld [wcf64], a  	ld [wcf65], a  	ld [wcf66], a @@ -974,7 +974,7 @@ Function106be: ; 106be  ; 106c7  Function106c7: ; 106c7 -	ld a, [wcf63] +	ld a, [wJumptableEntryIndexBuffer]  	ld hl, Jumptable_106d1  	call Function1086b  	jp [hl] @@ -1083,10 +1083,10 @@ Function1076f: ; 1076f  	ret  .asm_10795 -	ld a, [wcf63] +	ld a, [wJumptableEntryIndexBuffer]  	dec a  	and $3 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	push de  	ld de, SFX_UNKNOWN_62  	call PlaySFX @@ -1095,10 +1095,10 @@ Function1076f: ; 1076f  	ret  .asm_107a8 -	ld a, [wcf63] +	ld a, [wJumptableEntryIndexBuffer]  	inc a  	and $3 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	push de  	ld de, SFX_UNKNOWN_62  	call PlaySFX @@ -1124,7 +1124,7 @@ Function107bb: ; 107bb  ; 107d7  Function107d7: ; 107d7 -	ld a, [wcf63] +	ld a, [wJumptableEntryIndexBuffer]  	ld hl, Jumptable_107e1  	call Function1086b  	jp [hl] @@ -1228,7 +1228,7 @@ Function1085a: ; 1085a (4:485a)  	ret  Function10866: ; 10866 (4:4866) -	ld hl, wcf63 +	ld hl, wJumptableEntryIndexBuffer  	inc [hl]  	ret @@ -1245,14 +1245,14 @@ endr  ; 10874  Function10874: ; 10874 (4:4874) -	ld hl, wcf63 +	ld hl, wJumptableEntryIndexBuffer  	set 7, [hl]  	xor a  	ld [wcf66], a  	ret  Function1087e: ; 1087e (4:487e) -	ld hl, wcf63 +	ld hl, wJumptableEntryIndexBuffer  	set 7, [hl]  	ld a, $1  	ld [wcf66], a @@ -1336,12 +1336,12 @@ Function108d4: ; 108d4 (4:48d4)  	ret  .asm_108fa  	ld a, $9 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	scf  	ret  .asm_10901  	ld a, b -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ld [wcf64], a  	push de  	ld de, SFX_UNKNOWN_62 @@ -1351,7 +1351,7 @@ Function108d4: ; 108d4 (4:48d4)  	ret  .asm_10912  	ld a, c -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ld [wcf64], a  	push de  	ld de, SFX_UNKNOWN_62 diff --git a/engine/pokedex.asm b/engine/pokedex.asm index 5c86aace1..4e9d137b4 100644 --- a/engine/pokedex.asm +++ b/engine/pokedex.asm @@ -28,7 +28,7 @@ Pokedex: ; 40000  .main  	call JoyTextDelay -	ld a, [wcf63] +	ld a, [wJumptableEntryIndexBuffer]  	bit 7, a  	jr nz, .exit  	call Function4010b @@ -75,7 +75,7 @@ ENDC  	call ByteFill  	xor a -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ld [wcf64], a  	ld [wcf65], a  	ld [wcf66], a @@ -173,7 +173,7 @@ Function400ed: ; 400ed  ; 4010b  Function4010b: ; 4010b -	ld a, [wcf63] +	ld a, [wJumptableEntryIndexBuffer]  	ld hl, Jumptable_40115  	call Function41432  	jp [hl] @@ -198,12 +198,12 @@ Jumptable_40115: ; 40115 (10:4115)  Function40131: ; 40131 (10:4131) -	ld hl, wcf63 +	ld hl, wJumptableEntryIndexBuffer  	inc [hl]  	ret  Function40136: ; 40136 (10:4136) -	ld hl, wcf63 +	ld hl, wJumptableEntryIndexBuffer  	set 7, [hl]  	ret @@ -283,7 +283,7 @@ Function401ae: ; 401ae (10:41ae)  	call Function40bd0  	ret z  	ld a, $2 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ld a, $0  	ld [wcf64], a  	ret @@ -291,7 +291,7 @@ Function401ae: ; 401ae (10:41ae)  .select  	call Function41401  	ld a, $7 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	xor a  	ld [hSCX], a ; $ff00+$cf  	ld a, $a7 @@ -302,7 +302,7 @@ Function401ae: ; 401ae (10:41ae)  .start  	call Function41401  	ld a, $5 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	xor a  	ld [hSCX], a ; $ff00+$cf  	ld a, $a7 @@ -312,7 +312,7 @@ Function401ae: ; 401ae (10:41ae)  .b  	ld a, $d -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ret  Function40217: ; 40217 (10:4217) @@ -372,7 +372,7 @@ Function40258: ; 40258 (10:4258)  .asm_40288  	call MaxVolume  	ld a, [wcf64] -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ret  ; 40292 (10:4292) @@ -408,7 +408,7 @@ Function402aa: ; 402aa (10:42aa)  	call Function41423  	ld a, [CurPartySpecies]  	call PlayCry -	ld hl, wcf63 +	ld hl, wJumptableEntryIndexBuffer  	dec [hl]  	ret  ; 402e8 (10:42e8) @@ -478,11 +478,11 @@ Function4034f: ; 4034f  	push af  	ld a, [wcf64]  	push af -	ld a, [wcf63] +	ld a, [wJumptableEntryIndexBuffer]  	push af  	callba Function8442c  	pop af -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	pop af  	ld [wcf64], a  	pop af @@ -552,7 +552,7 @@ Function403be: ; 403be (10:43be)  .asm_403ea  	call Function41401  	ld a, $0 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ret  ; 403f3 (10:43f3) @@ -604,13 +604,13 @@ Function40417: ; 40417 (10:4417)  .asm_40431  	call Function41401  	ld a, $0 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ret  Function4043a: ; 4043a (10:443a)  	call Function41401  	ld a, $b -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ret  Function40443: ; 40443 (10:4443) @@ -656,7 +656,7 @@ Function40471: ; 40471 (10:4471)  .asm_40495  	call Function41401  	ld a, $0 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ret  ; 4049e (10:449e) @@ -710,14 +710,14 @@ Function404b7: ; 404b7  	ld [wc7d1], a  	call Function41401  	ld a, $9 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ret  ; 40501  Function40501: ; 40501  	call Function41401  	ld a, $0 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ret  ; 4050a @@ -779,7 +779,7 @@ Function40562: ; 40562 (10:4562)  	call Function40bd0  	ret z  	ld a, $2 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	ld a, $9  	ld [wcf64], a  	ret @@ -795,7 +795,7 @@ Function40562: ; 40562 (10:4562)  	call ClearSprites  	call Function40bdc  	ld a, $5 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	xor a  	ld [hSCX], a ; $ff00+$cf  	ld a, $a7 @@ -827,7 +827,7 @@ Function405df: ; 405df (10:45df)  .asm_405eb  	call Function41401  	ld a, $7 -	ld [wcf63], a +	ld [wJumptableEntryIndexBuffer], a  	call DelayFrame  	call Function41a24  	jr nz, .asm_40603 diff --git a/engine/scripting.asm b/engine/scripting.asm index 5cd62a22d..351dcc744 100644 --- a/engine/scripting.asm +++ b/engine/scripting.asm @@ -1558,23 +1558,25 @@ Script_returnafterbattle: ; 0x97459  	ld a, [wd0ee]  	and $3f  	cp $1 -	jr nz, .asm_97470 ; 0x97466 $8 +	jr nz, .notblackedout ; 0x97466 $8  	ld b, BANK(UnknownScript_0x124c1)  	ld hl, UnknownScript_0x124c1  	jp ScriptJump -.asm_97470 + +.notblackedout  	bit 0, d  	jr z, .asm_9747c ; 0x97472 $8 -	callba Functionfcfec -	jr .asm_9748e ; 0x9747a $12 +	callba MomTriesToBuySomething +	jr .done ; 0x9747a $12 +  .asm_9747c  	ld a, [wd0ee]  	bit 7, a -	jr z, .asm_9748e ; 0x97481 $b -	ld b, BANK(UnknownScript_0x90255) -	ld de, UnknownScript_0x90255 +	jr z, .done ; 0x97481 $b +	ld b, BANK(Script_SpecialBillCall) +	ld de, Script_SpecialBillCall  	callba Function97c4f -.asm_9748e +.done  	jp Script_reloadmap  ; 0x97491 diff --git a/engine/title.asm b/engine/title.asm index 675bab2f3..8296641dc 100644 --- a/engine/title.asm +++ b/engine/title.asm @@ -9,7 +9,7 @@ _TitleScreen: ; 10ed67  	ld [hBGMapMode], a  ; Reset timing variables -	ld hl, wcf63 +	ld hl, wJumptableEntryIndexBuffer  	ld [hli], a ; cf63 ; Scene?  	ld [hli], a ; cf64  	ld [hli], a ; cf65 ; Timer lo @@ -130,10 +130,10 @@ _TitleScreen: ; 10ed67  ; Initialize running Suicune?  	ld d, $0 -	call Function10eed2 +	call LoadSuicuneFrame  ; Initialize background crystal -	call Function10ef06 +	call InitializeBackground  ; Save WRAM bank  	ld a, [rSVBK] @@ -145,12 +145,12 @@ _TitleScreen: ; 10ed67  ; Update palette colors  	ld hl, TitleScreenPalettes  	ld de, Unkn1Pals -	ld bc, $0080 +	ld bc, 4 * 32  	call CopyBytes  	ld hl, TitleScreenPalettes  	ld de, BGPals -	ld bc, $0080 +	ld bc, 4 * 32  	call CopyBytes  ; Restore WRAM bank @@ -220,7 +220,7 @@ _TitleScreen: ; 10ed67  	ld [hBGMapMode], a  	xor a -	ld [DefaultFlypoint], a +	ld [UnknPals1 + 2], a  ; Play starting sound effect  	call SFXChannelsOff @@ -230,25 +230,28 @@ _TitleScreen: ; 10ed67  	ret  ; 10eea7 -Function10eea7: ; 10eea7 -	ld hl, DefaultFlypoint +SuicuneFrameIterator: ; 10eea7 +	ld hl, UnknPals1 + 2  	ld a, [hl]  	ld c, a  	inc [hl] -	and $7 + +; Only do this once every eight frames +	and (1 << 3) - 1  	ret nz +  	ld a, c -	and $18 +	and 3 << 3  	sla a  	swap a  	ld e, a  	ld d, $0 -	ld hl, Unknown_10eece +	ld hl, .Frames  	add hl, de  	ld d, [hl]  	xor a  	ld [hBGMapMode], a -	call Function10eed2 +	call LoadSuicuneFrame  	ld a, $1  	ld [hBGMapMode], a  	ld a, $3 @@ -256,33 +259,36 @@ Function10eea7: ; 10eea7  	ret  ; 10eece -Unknown_10eece: ; 10eece -	db $80, $88, $00, $08 +.Frames: ; 10eece +	db $80 ; VTiles4 tile $00 +	db $88 ; VTiles4 tile $08 +	db $00 ; VTiles5 tile $00 +	db $08 ; VTiles5 tile $08  ; 10eed2 -Function10eed2: ; 10eed2 +LoadSuicuneFrame: ; 10eed2  	hlcoord 6, 12 -	ld b, $6 -.asm_10eed7 -	ld c, $8 -.asm_10eed9 +	ld b, 6 +.row +	ld c, 8 +.col  	ld a, d  	ld [hli], a  	inc d  	dec c -	jr nz, .asm_10eed9 -	ld a, $c +	jr nz, .col +	ld a, SCREEN_WIDTH - 8  	add l  	ld l, a -	ld a, $0 +	ld a, 0  	adc h  	ld h, a -	ld a, $8 +	ld a, 8  	add d  	ld d, a  	dec b -	jr nz, .asm_10eed7 +	jr nz, .row  	ret  ; 10eeef @@ -293,18 +299,18 @@ DrawTitleGraphic: ; 10eeef  ;   c: width  ;   d: tile to start drawing from  ;   e: number of tiles to advance for each row -.asm_10eeef +.row  	push de  	push bc  	push hl -.asm_10eef2 +.col  	ld a, d  	ld [hli], a  	inc d  	dec c -	jr nz, .asm_10eef2 +	jr nz, .col  	pop hl -	ld bc, $0014 +	ld bc, SCREEN_WIDTH  	add hl, bc  	pop bc  	pop de @@ -312,31 +318,31 @@ DrawTitleGraphic: ; 10eeef  	add d  	ld d, a  	dec b -	jr nz, .asm_10eeef +	jr nz, .row  	ret  ; 10ef06 -Function10ef06: ; 10ef06 +InitializeBackground: ; 10ef06  	ld hl, Sprites -	ld d, $de +	ld d, -$22  	ld e, $0 -	ld c, $5 -.asm_10ef0f +	ld c, 5 +.loop  	push bc -	call Function10ef1c +	call .InitColumn  	pop bc  	ld a, $10  	add d  	ld d, a  	dec c -	jr nz, .asm_10ef0f +	jr nz, .loop  	ret  ; 10ef1c -Function10ef1c: ; 10ef1c +.InitColumn: ; 10ef1c  	ld c, $6  	ld b, $40 -.asm_10ef20 +.loop  	ld a, d  	ld [hli], a  	ld a, b @@ -351,7 +357,7 @@ endr  	ld a, $80  	ld [hli], a  	dec c -	jr nz, .asm_10ef20 +	jr nz, .loop  	ret  ; 10ef32 @@ -363,7 +369,7 @@ AnimateTitleCrystal: ; 10ef32  ; y is really from the bottom of the sprite, which is two tiles high  	ld hl, Sprites  	ld a, [hl] -	cp 6 + 16 +	cp 6 + $10  	ret z  ; Move all 30 parts of the crystal down by 2 | 
