src/spritecache.c
changeset 5501 b4e81fd72b3a
parent 5500 91a9244b4644
child 5504 a6ef917aa095
equal deleted inserted replaced
5500:91a9244b4644 5501:b4e81fd72b3a
   333 		// Reached sentinel, but no block found yet. Delete some old entry.
   333 		// Reached sentinel, but no block found yet. Delete some old entry.
   334 		DeleteEntryFromSpriteCache();
   334 		DeleteEntryFromSpriteCache();
   335 	}
   335 	}
   336 }
   336 }
   337 
   337 
   338 #if defined(NEW_ROTATION)
       
   339 #define X15(x) else if (s >= x && s < (x+15)) { s = _rotate_tile_sprite[s - x] + x; }
       
   340 #define X19(x) else if (s >= x && s < (x+19)) { s = _rotate_tile_sprite[s - x] + x; }
       
   341 #define MAP(from,to,map) else if (s >= from && s <= to) { s = map[s - from] + from; }
       
   342 
       
   343 
       
   344 static uint RotateSprite(uint s)
       
   345 {
       
   346 	static const byte _rotate_tile_sprite[19] = { 0, 2, 4, 6, 8, 10, 12, 14, 1, 3, 5, 7, 9, 11, 13, 17, 18, 16, 15 };
       
   347 	static const byte _coast_map[9] = {0, 4, 3, 1, 2, 6, 8, 5, 7};
       
   348 	static const byte _fence_map[6] = {1, 0, 5, 4, 3, 2};
       
   349 
       
   350 	if (0);
       
   351 	X19(752)
       
   352 	X15(990-1)
       
   353 	X19(3924)
       
   354 	X19(3943)
       
   355 	X19(3962)
       
   356 	X19(3981)
       
   357 	X19(4000)
       
   358 	X19(4023)
       
   359 	X19(4042)
       
   360 	MAP(4061, 4069, _coast_map)
       
   361 	X19(4126)
       
   362 	X19(4145)
       
   363 	X19(4164)
       
   364 	X19(4183)
       
   365 	X19(4202)
       
   366 	X19(4221)
       
   367 	X19(4240)
       
   368 	X19(4259)
       
   369 	X19(4259)
       
   370 	X19(4278)
       
   371 	MAP(4090, 4095, _fence_map)
       
   372 	MAP(4096, 4101, _fence_map)
       
   373 	MAP(4102, 4107, _fence_map)
       
   374 	MAP(4108, 4113, _fence_map)
       
   375 	MAP(4114, 4119, _fence_map)
       
   376 	MAP(4120, 4125, _fence_map)
       
   377 	return s;
       
   378 }
       
   379 #endif
       
   380 
   338 
   381 const void *GetRawSprite(SpriteID sprite)
   339 const void *GetRawSprite(SpriteID sprite)
   382 {
   340 {
   383 	void* p;
   341 	void* p;
   384 
   342 
   385 	assert(sprite < MAX_SPRITES);
   343 	assert(sprite < MAX_SPRITES);
   386 
       
   387 #if defined(NEW_ROTATION)
       
   388 	sprite = RotateSprite(sprite);
       
   389 #endif
       
   390 
   344 
   391 	// Update LRU
   345 	// Update LRU
   392 	_sprite_lru_new[sprite] = ++_sprite_lru_counter;
   346 	_sprite_lru_new[sprite] = ++_sprite_lru_counter;
   393 
   347 
   394 	p = _sprite_ptr[sprite];
   348 	p = _sprite_ptr[sprite];