aboutsummaryrefslogtreecommitdiff
path: root/taipan.c
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2021-05-10 16:47:37 -0400
committerB. Watson <yalhcru@gmail.com>2021-05-10 16:47:37 -0400
commit9d59ca053dbfddb34a2a4eac8ebb0252460c0137 (patch)
treed7bd40834b73b5b6115ff0293cf6c22145b88245 /taipan.c
parent2ff01881f4b7f0842a10e3c5ab7991c81f60861d (diff)
downloadtaipan-9d59ca053dbfddb34a2a4eac8ebb0252460c0137.tar.gz
Rewrite array handling, save 175 bytes
Diffstat (limited to 'taipan.c')
-rw-r--r--taipan.c43
1 files changed, 22 insertions, 21 deletions
diff --git a/taipan.c b/taipan.c
index 367c7be..8221cc1 100644
--- a/taipan.c
+++ b/taipan.c
@@ -378,6 +378,17 @@ unsigned long __fastcall__ strtonum(const char* nptr);
unsigned char firmpos;
+int ships_on_screen[10];
+
+/* arrayutils.s */
+extern char no_ships_on_screen(void);
+extern void clear_ships_on_screen(void);
+extern char have_no_cargo(void);
+extern char hold_is_empty(void);
+extern char hkw_is_empty(void);
+extern void clear_hold(void);
+extern void clear_hkw(void);
+
/* use page 6 for these buffers, for .xex build. Otherwise they're BSS. */
#ifdef CART_TARGET
char firm[23];
@@ -637,14 +648,8 @@ void init_game(void) {
#else
bank = 0;
#endif
- hkw_[0] = 0;
- hkw_[1] = 0;
- hkw_[3] = 0;
- hkw_[4] = 0;
- hold_[0] = 0;
- hold_[1] = 0;
- hold_[2] = 0;
- hold_[3] = 0;
+ clear_hkw();
+ clear_hold();
hold = 0;
damage = 0;
wu_warn = 0;
@@ -1091,12 +1096,6 @@ void plus_or_space(unsigned char b) {
#endif
*/
-int ships_on_screen[10];
-extern char have_ships_on_screen(void);
-extern void clear_ships_on_screen(void);
-
-char have_no_cargo(void);
-
/* sea_battle only ever returns 1 to 4. making the
return type a char saved 61 bytes! */
char sea_battle(char id, int num_ships) {
@@ -1212,7 +1211,7 @@ char sea_battle(char id, int num_ships) {
set_orders();
for(i = 1; i <= guns; i++) {
- if(!have_ships_on_screen()) {
+ if(no_ships_on_screen()) {
static int j;
for (j = 0; j <= 9; j++) {
@@ -1332,7 +1331,7 @@ char sea_battle(char id, int num_ships) {
total = 0;
turbo = 0;
- if(have_no_cargo()) {
+ if(hold_is_empty()) {
print_combat_msg(M_you_have_no_cargo);
cprint_taipan_bangbang();
bad_joss_sound();
@@ -1407,10 +1406,7 @@ char sea_battle(char id, int num_ships) {
hold += amount;
ok += (amount / 10);
} else {
- hold_[0] = 0;
- hold_[1] = 0;
- hold_[2] = 0;
- hold_[3] = 0;
+ clear_hold();
hold += total;
ok += (total / 10);
}
@@ -2179,12 +2175,15 @@ void final_stats(void)
#endif
}
+/*
+ // rewritten in asm (arrayutils.s)
char have_no_cargo(void) {
char i;
for(i = 0; i < 4; ++i)
if(hkw_[i] || hold_[i]) return 0;
return 1;
}
+*/
/*
#ifdef CART_TARGET
@@ -3550,9 +3549,11 @@ int main(void) {
under_attack_timed_getch();
}
+ /*
if ((one_chance_in(50)) &&
((hkw_[0] + hkw_[1] + hkw_[2] + hkw_[3]) > 0))
- {
+ */
+ if(one_chance_in(50) && !hkw_is_empty()) {
int i;
for (i = 0; i < 4; i++)