diff --git a/games/riven_hgr/Makefile b/games/riven_hgr/Makefile index 2bb163bb..943cf2f4 100644 --- a/games/riven_hgr/Makefile +++ b/games/riven_hgr/Makefile @@ -250,3 +250,33 @@ distclean: cd disk40_files && make distclean cd disk43_files && make distclean +### + +generate_common: generate_common.o + $(CC) $(LFLAGS) -o generate_common generate_common.o + +generate_common.o: generate_common.c + $(CC) $(CFLAGS) -c generate_common.c + +#### + +#qload_start = $1800 + +#full_decomp = qload_start+$DB +#wait = qload_start+$161 +#wait_50xms = qload_start+$16f +#draw_pointer = qload_start+$178 +#save_bg_14x14 = qload_start+$44f +#handle_keypress = qload_start+$4b9 +#change_location = qload_start+$5f9 + + +qload.inc: generate_common QLOAD_01 + ./generate_common -a 0x1800 -s full_decomp qload_01.lst > qload.inc + ./generate_common -a 0x1800 -s wait qload_01.lst >> qload.inc + ./generate_common -a 0x1800 -s wait_50xms qload_01.lst >> qload.inc + ./generate_common -a 0x1800 -s draw_pointer qload_01.lst >> qload.inc + ./generate_common -a 0x1800 -s save_bg_14x14 qload_01.lst >> qload.inc + ./generate_common -a 0x1800 -s handle_keypress qload_01.lst >> qload.inc + ./generate_common -a 0x1800 -s change_location qload_01.lst >> qload.inc + diff --git a/games/riven_hgr/generate_common.c b/games/riven_hgr/generate_common.c new file mode 100644 index 00000000..aa8e095c --- /dev/null +++ b/games/riven_hgr/generate_common.c @@ -0,0 +1,77 @@ +#include +#include +#include +#include + + + +static FILE *fff; + + +static void find_address(char *symbol_name, int routine_offset) { + + unsigned int addr=0; + char string[BUFSIZ],*result; + char temp_name[BUFSIZ]; + + strncpy(temp_name,symbol_name,BUFSIZ); + strncat(temp_name,":",2); + + while(1) { + + result=fgets(string,BUFSIZ,fff); + if (result==NULL) { + fprintf(stderr,"Error: %s not found!\n",symbol_name); + exit(-1); + } + + result=strstr(string,temp_name); + if (result!=NULL) { + string[6]=0; + sscanf(string,"%x",&addr); + break; + } + } + + + printf("%s\t=$%04x\n",symbol_name,addr+routine_offset); +} + +int main(int argc, char **argv) { + + int c; + char *filename; + char symbol[BUFSIZ]; + int routine_offset=0xd000; + + while ( (c=getopt(argc, argv, "a:s:") ) != -1) { + + switch(c) { + + case 'a': + routine_offset=strtol(optarg, NULL, 0); + break; + case 's': + strncpy(symbol,optarg,BUFSIZ-1); + break; + default: + fprintf(stderr,"Unknown option %c\n",c); + exit(-1); + break; + } + } + + filename=strdup(argv[optind]); + + fff=fopen(filename,"r"); + if (fff==NULL) { + fprintf(stderr,"ERROR! could not open %s\n",filename); + return -1; + } + + find_address(symbol,routine_offset); + + fclose(fff); + + return 0; +} diff --git a/games/riven_hgr/qload.inc b/games/riven_hgr/qload.inc deleted file mode 100644 index bff10a23..00000000 --- a/games/riven_hgr/qload.inc +++ /dev/null @@ -1,12 +0,0 @@ -; TODO: autoate generating this - -qload_start = $1800 - -full_decomp = qload_start+$DB -wait = qload_start+$161 -wait_50xms = qload_start+$16f -draw_pointer = qload_start+$178 -save_bg_14x14 = qload_start+$44f -handle_keypress = qload_start+$4b9 -change_location = qload_start+$5f9 -