aboutsummaryrefslogtreecommitdiff
path: root/dialogues
diff options
context:
space:
mode:
authorAstatin <[email protected]>2025-04-11 16:20:31 +0200
committerAstatin <[email protected]>2025-04-11 16:20:31 +0200
commita846ccc0cc20fe49b5ee07e252b370dc005b38cd (patch)
tree7996f4fdbca1e054bac3d87dd565178da9ba9191 /dialogues
parent690ff7c09726d9e760b52b717c70e9567531175c (diff)
Make hop the only default attack and make cats drop heal
Diffstat (limited to 'dialogues')
-rw-r--r--dialogues/dialogues.gbasm166
-rw-r--r--dialogues/text.gbasm26
-rw-r--r--dialogues/text.gbtxt20
-rw-r--r--dialogues/utils.gbasm21
4 files changed, 229 insertions, 4 deletions
diff --git a/dialogues/dialogues.gbasm b/dialogues/dialogues.gbasm
index 1fdcc80..1501a79 100644
--- a/dialogues/dialogues.gbasm
+++ b/dialogues/dialogues.gbasm
@@ -4,6 +4,7 @@ Dialogue_script_step:
LD A, ($mem_dialogue_script_program_counter+1)
LD L, A
+ .next:
LD A, (HL+)
LD BC, =Dialogue_script_instruction_Jump_Table
@@ -26,10 +27,22 @@ Dialogue_script_instruction_Jump_Table:
JP =.Text
NOP
- ;02
+ ; 02
JP =.TextB
NOP
+ ; 03
+ JP =.Learn_Attack
+ NOP
+
+ ; 04
+ JP =.TextB_Indirect
+ NOP
+
+ ; 05
+ JP =.Learn_Attack_Return
+ NOP
+
.Text:
PUSH HL
LD HL, $dialogue_first_line
@@ -67,6 +80,12 @@ Dialogue_script_instruction_Jump_Table:
RET
.TextB:
+ PUSH HL
+ LD HL, $dialogue_first_line
+ LD BC, $12
+ CALL =bzero
+ POP HL
+
LD A, (HL+)
LD B, A
LD A, (HL+)
@@ -76,6 +95,12 @@ Dialogue_script_instruction_Jump_Table:
CALL =Print_str
POP HL
+ PUSH HL
+ LD HL, $dialogue_third_line
+ LD BC, $12
+ CALL =bzero
+ POP HL
+
LD A, (HL+)
LD B, A
LD A, (HL+)
@@ -90,5 +115,144 @@ Dialogue_script_instruction_Jump_Table:
RET
+ .TextB_Indirect:
+ PUSH HL
+ LD HL, $dialogue_first_line
+ LD BC, $12
+ CALL =bzero
+ POP HL
+
+ LD A, (HL+)
+ LD B, A
+ LD A, (HL+)
+ LD C, A
+ PUSH DE
+ LD A, (BC)
+ LD D, A
+ INC BC
+ LD A, (BC)
+ LD E, A
+ LD B, D
+ LD C, E
+ POP DE
+ PUSH HL
+ LD HL, $dialogue_first_line
+ DBG
+ CALL =Print_str
+ POP HL
+
+
+ PUSH HL
+ LD HL, $dialogue_third_line
+ LD BC, $12
+ CALL =bzero
+ POP HL
+
+ LD A, (HL+)
+ LD B, A
+ LD A, (HL+)
+ LD C, A
+ PUSH HL
+ LD HL, $dialogue_third_line
+ CALL =Print_str
+ POP HL
+
+ LD A, $07
+ LD $mem_display_flag, A
+
+ RET
+
+ .Learn_Attack:
+ LD A, (HL+)
+ LD E, A
+
+ LD B, $00
+ LD C, A
+ SLA C
+ RR B
+ SLA C
+ RR B
+ SLA C
+ RR B
+ LD A, C
+ ADD low(=Attack_List)
+ LD C, A
+ LD A, B
+ ADC high(=Attack_List)
+ LD B, A
+
+ LD A, (BC)
+ LD ($mem_learn_attack_attack_name_ptr), A
+ INC BC
+ LD A, (BC)
+ LD ($mem_learn_attack_attack_name_ptr+1), A
+
+ LD A, H
+ LD ($mem_learn_attack_dialogue_ret_ptr), A
+ LD A, L
+ LD ($mem_learn_attack_dialogue_ret_ptr+1), A
+
+ LD A, E
+ LD HL, $mem_bunny_attacks
+ .Learn_Attack.Check_doubles.loop:
+ LD A, (HL)
+ CP E
+ JR Z, =.Learn_Attack.Duplicate
+ INC HL
+ LD A, L
+ CP low($mem_bunny_attacks+4)
+ JR NZ, =.Learn_Attack.Check_doubles.loop
+
+ LD A, $mem_number_of_attacks
+ CP $04
+ JR NC, =.Learn_Attack.Not_enough_slot
+
+ .Learn_Attack.Success:
+ LD A, $mem_number_of_attacks
+ LD HL, $mem_bunny_attacks
+ ADD L
+ LD L, A
+ LD (HL), $02
+ LD A, $mem_number_of_attacks
+ INC A
+ LD $mem_number_of_attacks, A
+
+ LD HL, =.Learn_Attack.Dialogue
+ JP =Dialogue_script_step.next
+ .Learn_Attack.Dialogue:
+ .TEXT =New_attack_1t =New_attack_1b
+ .TEXTB_INDIRECT $mem_learn_attack_attack_name_ptr =Double_Exclamation
+ .LEARN_ATTACK_RET
+
+
+ .Learn_Attack.Not_enough_slot:
+
+ LD HL, =.Learn_Attack.Not_enough_slot.Dialogue
+ JP =Dialogue_script_step.next
+ .Learn_Attack.Not_enough_slot.Dialogue:
+ .TEXT =No_attslot_1t =No_attslot_1b
+ .TEXTB_INDIRECT $mem_learn_attack_attack_name_ptr =Double_Exclamation
+ .TEXT =No_attslot_3t =No_attslot_3b
+ .TEXT =No_attslot_4t =Empty
+ .LEARN_ATTACK_RET
+
+ .Learn_Attack.Duplicate:
+ LD HL, =.Learn_Attack.Duplicate.Dialogue
+ JP =Dialogue_script_step.next
+ .Learn_Attack.Duplicate.Dialogue:
+ .TEXT =dup_attack_1t =dup_attack_1b
+ .TEXTB_INDIRECT $mem_learn_attack_attack_name_ptr =Double_Exclamation
+ .TEXT =dup_attack_3t =dup_attack_3b
+ .TEXT =dup_attack_4t =Empty
+ .LEARN_ATTACK_RET
+
+ .Learn_Attack_Return:
+ LD A, ($mem_learn_attack_dialogue_ret_ptr)
+ LD H, A
+ LD A, ($mem_learn_attack_dialogue_ret_ptr+1)
+ LD L, A
+ DBG
+ JP =Dialogue_script_step.next
+
.INCLUDE "dialogues/text.gbasm"
.INCLUDE "dialogues/demo_quest.gbasm"
diff --git a/dialogues/text.gbasm b/dialogues/text.gbasm
index eaefa13..491d395 100644
--- a/dialogues/text.gbasm
+++ b/dialogues/text.gbasm
@@ -4,6 +4,32 @@ Bunny_Header_Text:
.DB 0x8b, 0x9e, 0x97, 0x97, 0xa2, 0xaa, 0xff
Unknown_Header_Text:
.DB 0xa6, 0xa6, 0xa6, 0xaa, 0xff
+Double_Exclamation:
+.DB 0xa5, 0xa5, 0xff
+New_attack_1t:
+.DB 0xa2, 0x98, 0x9e, 0x0, 0x95, 0x8e, 0x8a, 0x9b, 0x97, 0x8e, 0x8d, 0x0, 0x9d, 0x91, 0x8e, 0xff
+New_attack_1b:
+.DB 0x8a, 0x9d, 0x9d, 0x8a, 0x8c, 0x94, 0xaa, 0xff
+No_attslot_1t:
+.DB 0xa2, 0x98, 0x9e, 0x0, 0x8f, 0x98, 0x9e, 0x97, 0x8d, 0x0, 0x9d, 0x91, 0x8e, 0xff
+No_attslot_1b:
+.DB 0x8a, 0x9d, 0x9d, 0x8a, 0x8c, 0x94, 0xaa, 0xff
+No_attslot_3t:
+.DB 0x8b, 0x9e, 0x9d, 0x0, 0xa2, 0x98, 0x9e, 0x0, 0x8a, 0x95, 0x9b, 0x8e, 0x8a, 0x8d, 0xa2, 0xff
+No_attslot_3b:
+.DB 0x94, 0x97, 0x98, 0xa0, 0x0, 0x9d, 0x98, 0x98, 0x0, 0x96, 0x8a, 0x97, 0xa2, 0xff
+No_attslot_4t:
+.DB 0x8a, 0x9d, 0x9d, 0x8a, 0x8c, 0x94, 0x9c, 0xa4, 0xa4, 0xa4, 0xff
+dup_attack_1t:
+.DB 0xa2, 0x98, 0x9e, 0x0, 0x8f, 0x98, 0x9e, 0x97, 0x8d, 0x0, 0x9d, 0x91, 0x8e, 0xff
+dup_attack_1b:
+.DB 0x8a, 0x9d, 0x9d, 0x8a, 0x8c, 0x94, 0xaa, 0xff
+dup_attack_3t:
+.DB 0x8b, 0x9e, 0x9d, 0x0, 0xa2, 0x98, 0x9e, 0x0, 0x8a, 0x95, 0x9b, 0x8e, 0x8a, 0x8d, 0xa2, 0xff
+dup_attack_3b:
+.DB 0x94, 0x97, 0x98, 0xa0, 0x0, 0x9d, 0x91, 0x92, 0x9c, 0xff
+dup_attack_4t:
+.DB 0x8a, 0x9d, 0x9d, 0x8a, 0x8c, 0x94, 0xa4, 0xa4, 0xa4, 0xff
Dialogue_1_1b:
.DB 0x91, 0x8e, 0x95, 0x95, 0x98, 0x0, 0xa5, 0xff
Dialogue_1_2t:
diff --git a/dialogues/text.gbtxt b/dialogues/text.gbtxt
index ce9a261..246732c 100644
--- a/dialogues/text.gbtxt
+++ b/dialogues/text.gbtxt
@@ -2,6 +2,26 @@ Empty:
Bunny_Header_Text: Bunny:
Unknown_Header_Text: ???:
+Double_Exclamation: !!
+
+New_attack_1t: You learned the
+New_attack_1b: attack:
+
+No_attslot_1t: You found the
+No_attslot_1b: attack:
+
+No_attslot_3t: But you already
+No_attslot_3b: know too many
+
+No_attslot_4t: attacks...
+
+dup_attack_1t: You found the
+dup_attack_1b: attack:
+
+dup_attack_3t: But you already
+dup_attack_3b: know this
+
+dup_attack_4t: attack...
Dialogue_1_1b: Hello !
diff --git a/dialogues/utils.gbasm b/dialogues/utils.gbasm
index 38c9e51..51c0083 100644
--- a/dialogues/utils.gbasm
+++ b/dialogues/utils.gbasm
@@ -7,17 +7,32 @@
.END
.MACRODEF END
- .DB 00
+ .DB $00
.END
.MACRODEF TEXT first_line second_line
- .DB 01
+ .DB $01
.DB $first_line
.DB $second_line
.END
.MACRODEF TEXTB first_line second_line
- .DB 02
+ .DB $02
.DB $first_line
.DB $second_line
.END
+
+.MACRODEF LEARN_ATTACK attack_idx
+ .DB $03
+ .DB low($attack_idx)
+.END
+
+.MACRODEF TEXTB_INDIRECT indirect_line second_line
+ .DB $04
+ .DB $indirect_line
+ .DB $second_line
+.END
+
+.MACRODEF LEARN_ATTACK_RET
+ .DB $05
+.END