18 #include "../vbam/gba/Globals.h"
26 Range(uint32_t x = 0, uint32_t y = 0)
33 typedef std::vector<uint32_t>
Args;
50 : offset(p_off), bytecode(p_mem + p_off), length(1), cmd(*bytecode), str(
""),
51 toVisit((cmd == 0x06 || cmd == 0x07) * 3)
54 {
return (toVisit & (1 << result)); }
56 { toVisit &= ~(1 << result); }
59 printf(
"%#08x: ", offset);
60 for (
int i = 0; i < 10; i++)
61 printf(i < length ?
"%02x " :
" ", bytecode[i]);
62 printf(
"%s\n", str.c_str());
67 next = (cmd == 0x02 || cmd == 0x03 ? 0 : offset +
length);
73 Command(std::initializer_list<std::string> il)
74 :
format(il.size() ? *(il.begin()) :
"UNKNOWN"),
75 args(il.size() > 1 ? *(il.begin() + 1) :
""),
99 static Script *
getSign(uint8_t bank, uint8_t map, uint8_t
id);
109 void _subPrint(uint32_t ptr);
111 bool _setupNextAddr();
112 void _getInstruction(Command &cmd);
115 uint32_t _readByte();
116 uint32_t _readWord();
117 uint32_t _readDword();
120 void _loadpointer(Instruction *instr);
121 void _bufferstring(Instruction *instr);
122 void _preparemsg(Instruction *instr);
123 void _checkattack(Instruction *instr);
124 void _if(Instruction *instr);
125 void _branch(Instruction *instr);
134 std::vector<Range> _ranges;
135 std::queue<uint32_t> _addrs;
136 std::map<int, Instruction *> _instructions;
138 static Command _cmds[0xD6];
139 static std::map<std::string, ParamReader> _readers;
Instruction(uint32_t p_off, uint8_t *p_mem)
Definition: Script.hh:49
uint8_t * bytecode
Definition: Script.hh:40
Args args
Definition: Script.hh:45
std::string args
Definition: Script.hh:83
bool notVisited(bool result)
Definition: Script.hh:53
std::vector< uint32_t > Args
Definition: Script.hh:33
static Script * getPerson(uint8_t bank, uint8_t map, uint8_t id)
Definition: Script.cpp:178
std::vector< std::string > TypeList
Definition: Script.hh:34
std::string format
Definition: Script.hh:82
uint32_t next
Definition: Script.hh:42
TypeList types
Definition: Script.hh:46
static void initStd()
Definition: Script.cpp:127
Script & load(uint32_t ptr)
Definition: Script.cpp:93
std::string str
Definition: Script.hh:44
uint8_t length
Definition: Script.hh:41
Command(const std::string &fmt, const std::string ¶ms="", void(Script::*func)(Instruction *)=NULL)
Definition: Script.hh:78
uint32_t offset
Definition: Script.hh:39
Command(std::initializer_list< std::string > il)
Definition: Script.hh:73
uint8_t toVisit
Definition: Script.hh:47
std::map< int, Instruction * > & getInstructions()
Definition: Script.hh:105
static Script * getSign(uint8_t bank, uint8_t map, uint8_t id)
Definition: Script.cpp:199
void setLength(uint8_t len)
Definition: Script.hh:64
uint32_t(Script::* ParamReader)()
Definition: Script.hh:35
static Script * getScript(uint8_t bank, uint8_t map, uint8_t id)
Definition: Script.cpp:219
~Script()
Definition: Script.cpp:10
void print()
Definition: Script.cpp:156
uint8_t cmd
Definition: Script.hh:43
static Script & getStd(uint8_t n)
Definition: Script.hh:95
Range(float a=0, float b=0)
Definition: Data.hh:21
Script()
Definition: Script.cpp:5
uint32_t getStartOffset()
Definition: Script.hh:106
void visit(bool result)
Definition: Script.hh:55
void print()
Definition: Script.hh:57
void(Script::* hook)(Instruction *)
Definition: Script.hh:84
Script & loadStd(uint8_t n)
Definition: Script.cpp:121