Branch data Line data Source code
1 : : #pragma once
2 : :
3 : : enum { arch_65816, arch_spc700, arch_spc700_inline, arch_superfx };
4 : : extern int arch;
5 : :
6 : : bool assemblemapper(char** word, int numwords);
7 : :
8 : 132 : struct snes_struct {
9 : : string parent;
10 : : int base_end;
11 : : int struct_size;
12 : : int object_size;
13 : : bool is_static;
14 : : };
15 : :
16 : : extern assocarr<snes_struct> structs;
17 : :
18 : :
19 : : struct snes_label {
20 : : unsigned int pos;
21 : : bool is_static;
22 : :
23 : : snes_label()
24 : 1031 : {
25 : 1011 : pos = 0;
26 : 1031 : is_static = false;
27 : : }
28 : : };
29 : :
30 : :
31 : : // RPG Hacker: Really the only purpose of this struct is to support pushtable and pulltable
32 : : // Also don't know where else to put this, so putting it in this header
33 : : struct chartabledata {
34 : : unsigned int table[256];
35 : : };
36 : :
37 : : extern chartabledata table;
38 : :
39 : : struct whiletracker {
40 : : bool iswhile;
41 : : int startline;
42 : : bool cond;
43 : : bool is_for;
44 : : string for_variable;
45 : : string for_var_backup;
46 : : bool for_has_var_backup;
47 : : int for_start;
48 : : int for_end;
49 : : int for_cur;
50 : : };
51 : :
52 : : extern autoarray<whiletracker> whilestatus;
53 : :
54 : : // 0 - not first block, not in for
55 : : // 1 - first block
56 : : // 2 - inside single-line for
57 : : // 3 - after endfor
58 : : extern int single_line_for_tracker;
59 : :
60 : : bool confirmname(const char * name);
61 : : string posneglabelname(const char ** input, bool define);
62 : :
63 : : void write1_pick(unsigned int num);
64 : : void write2(unsigned int num);
65 : : void write3(unsigned int num);
66 : : void write4(unsigned int num);
67 : :
68 : : int read1(int snespos);
69 : : int read2(int snespos);
70 : : int read3(int snespos);
71 : :
72 : : int snestopc_pick(int addr);
73 : :
74 : : int getlenfromchar(char c);
75 : :
76 : : snes_label labelval(const char ** rawname, bool define = false);
77 : : snes_label labelval(char ** rawname, bool define = false);
78 : : snes_label labelval(string name, bool define = false);
79 : : bool labelval(const char ** rawname, snes_label * rval, bool define = false);
80 : : bool labelval(char ** rawname, snes_label * rval, bool define = false);
81 : : bool labelval(string name, snes_label * rval, bool define = false);
82 : :
83 : : const char * safedequote(char * str);
84 : :
85 : : void checkbankcross();
86 : :
87 : : void initstuff();
88 : : void finishpass();
89 : :
90 : : void assembleblock(const char * block, bool isspecialline);
91 : :
92 : : extern int snespos;
93 : : extern int realsnespos;
94 : : extern int startpos;
95 : : extern int realstartpos;
96 : :
97 : : extern int bytes;
98 : :
99 : : extern int numopcodes;
100 : :
101 : : extern bool warnxkas;
102 : :
103 : : extern int numif;
104 : : extern int numtrue;
105 : :
106 : : extern bool emulatexkas;
107 : :
108 : : extern int freespaceextra;
109 : :
110 : : extern assocarr<snes_label> labels;
111 : :
112 : : extern autoarray<int>* macroposlabels;
113 : : extern autoarray<int>* macroneglabels;
114 : : extern autoarray<string>* macrosublabels;
115 : :
116 : : extern autoarray<string> sublabels;
117 : : extern string ns;
118 : : extern autoarray<string> namespace_list;
119 : :
120 : : extern autoarray<string> includeonce;
|