Exemple #1
0
static WRITE8_HANDLER( gfx1_cram_w )
{
	FIX_OFFSET();
	if(gfx1_cram[offset] != data)
	{
		gfx1_cram[offset] = data;
		tilemap_mark_tile_dirty(gfx1_tilemap,offset);
	}
}
Exemple #2
0
static READ8_HANDLER( gfx1_cram_r )
{
	FIX_OFFSET();
	return gfx1_cram[offset];
}
static void relocate_db(prolog_database *db, block_info *old_blocks)
{
	int i;
	/* Do offsets */
	
#define FIX_OFFSET(p) fix_offset(((void **)p), db, old_blocks)
	
	/* Fix pointers in amheader */
	FIX_OFFSET(&db->als_mem->freelist);
	
	{
	long *p;
	for (p = db->als_mem->freelist; p; p = FB_NEXT(p)) {
		if (FB_NEXT(p)) FIX_OFFSET(&FB_NEXT(p));
	}
	}
	
	/* Fix db pointers */
	FIX_OFFSET(&db->top_module);
	FIX_OFFSET(&db->module_stack);
	
	FIX_OFFSET(&db->top_clausegroup);
	FIX_OFFSET(&db->clausegroup_stack);
	
	FIX_OFFSET(&db->module_table);
	FIX_OFFSET(&db->use_table);
	
	FIX_OFFSET(&db->default_uses);
	FIX_OFFSET(&db->default_procs);
	
	FIX_OFFSET(&db->toktable);
	FIX_OFFSET(&db->hashtable);
	
	for (i = 0; i < db->ts_prime; i++) {
		FIX_OFFSET(&db->toktable[i].tkname);
		if (db->hashtable[i]) FIX_OFFSET(&db->hashtable[i]);
	}
	
	FIX_OFFSET(&db->strings);
	FIX_OFFSET(&db->strings_last);
	FIX_OFFSET(&db->strings_next);
	
	FIX_OFFSET(&db->char_to_tok_map);
	
	FIX_OFFSET(&db->w_freeptr);
	
	{
		long *p;
	for (p = db->w_freeptr; 1; ) {
		FIX_OFFSET((long **)p+WCI_BLINK);
		FIX_OFFSET((long **)p+WCI_FLINK);
		p = *((long **) p + WCI_FLINK);
		if (p == db->w_freeptr) break;
	}
	}
	
	FIX_OFFSET(&db->w_tofreelist);
	
	{
		long *p;
	p = db->w_tofreelist;
	while (p) {
		if (*((long **) p + WCI_NEXTCLAUSEADDR))
			FIX_OFFSET((long **) p + WCI_NEXTCLAUSEADDR);
		p = *((long **) p + WCI_NEXTCLAUSEADDR);
	}
	}
	
	FIX_OFFSET(&db->w_nametable);
	
	{
		for (i = 0; i < NTBL_SIZE; i++) {
			if (db->w_nametable[i]) {
				FIX_OFFSET(&db->w_nametable[i]);
				
				if (db->w_nametable[i]->first_clause) {
					long *p;
					FIX_OFFSET(&db->w_nametable[i]->first_clause);
					p = db->w_nametable[i]->first_clause;
					while (p) {
						FIX_OFFSET(&nextClauseAddr(p));
						relocate_code(choiceEntry(p), sizeCode(p), db, old_blocks);
						p = next_clause(p);
					}
				}
				if (db->w_nametable[i]->last_clause) FIX_OFFSET(&db->w_nametable[i]->last_clause);
				if (db->w_nametable[i]->index_block) {
					long *p;
					FIX_OFFSET(&db->w_nametable[i]->index_block);
					p = db->w_nametable[i]->index_block;
					relocate_code(choiceEntry(p)+2, sizeCode(p), db, old_blocks);
				}
				relocate_code(db->w_nametable[i]->overflow, (int) (NTBL_OVERFLOWSIZE 
	                               + NTBL_CALLENTRYSIZE
				       + NTBL_EXECENTRYSIZE
				       + NTBL_CODESIZE), db, old_blocks);
			}
		}
	}
	
	FIX_OFFSET(&db->codeblock_list);
	
	{
		struct codeblock *p;
		
		for (p = db->codeblock_list; p; p = p->next) {
			FIX_OFFSET(&p->addr);
			FIX_OFFSET(&p->next);
		}
	}
	
	FIX_OFFSET(&db->ane_entbase);
	FIX_OFFSET(&db->ane_entptr);

	FIX_OFFSET(&db->wm_fail);
	relocate_code(db->wm_fail, 64, db, old_blocks);
	FIX_OFFSET(&db->wm_trust_fail);
	FIX_OFFSET(&db->wm_return_success);
	FIX_OFFSET(&db->wm_special);
	FIX_OFFSET(&db->wm_rungoal_code);
	FIX_OFFSET(&db->wm_panic);
	FIX_OFFSET(&db->wm_cutaddr);
	FIX_OFFSET(&db->wm_overcode);
	FIX_OFFSET(&db->rungoal_modpatch);
	FIX_OFFSET(&db->rungoal_goalpatch);

#undef FIX_OFFSET
	
	
}