diff --git a/gfx/tilesets/minecart/1.2bpp b/gfx/tilesets/minecart/1.2bpp
new file mode 100644
index 000000000..3bb46c953
--- /dev/null
+++ b/gfx/tilesets/minecart/1.2bpp
@@ -0,0 +1 @@
+€ÿ¿ÿ¿ÿ¿ÿ¿ÿ¿ÿ¿ÿ¿ÿÀ_ÿ_ßßßßßà?/ÿ/?ï?¯ï?¯ï?ðÿ÷·_÷—÷øÿë»Oû›oû
\ No newline at end of file
diff --git a/gfx/tilesets/minecart/10.2bpp b/gfx/tilesets/minecart/10.2bpp
new file mode 100644
index 000000000..a1af10a55
--- /dev/null
+++ b/gfx/tilesets/minecart/10.2bpp
@@ -0,0 +1 @@
+?ÿ_ÿ¿ÿ_ÿ¿ÿÿÿÿÿÿÿÿ¯ÿ_ÿ¯ÿ_ÿÿÿÿÿÿÿÿWÿ¯ÿ×ÿ¯ÿÿÿÿÿÿÿ«ÿWÿëÿWÿ¿ÿÿÿÿÿÿUÿ«ÿuÿ«ÿßÿÿÿÿÿ
\ No newline at end of file
diff --git a/gfx/tilesets/minecart/2.2bpp b/gfx/tilesets/minecart/2.2bpp
new file mode 100644
index 000000000..08d8cfd74
--- /dev/null
+++ b/gfx/tilesets/minecart/2.2bpp
@@ -0,0 +1 @@
+ðÐÿÐðßðÙößðßðÞñøèÿèøïøéþïøïøîùüôÿôü÷üõþ÷ü÷üöýþúÿúþûþûþûþûþúÿÿýÿýÿýÿýÿýÿýÿýÿ
\ No newline at end of file
diff --git a/gfx/tilesets/minecart/3.2bpp b/gfx/tilesets/minecart/3.2bpp
new file mode 100644
index 000000000..e4bb79a49
--- /dev/null
+++ b/gfx/tilesets/minecart/3.2bpp
@@ -0,0 +1 @@
+¿ÿ¿ÿ¿ÿ¿ÿ¿ÿ¿ÿ¿ÿ¿ÿß_ÿ_ßßßßßï?/ÿ/?ï?¯ï?¯ï?÷ÿ÷·_÷—÷ûÿë»Oû›oû
\ No newline at end of file
diff --git a/gfx/tilesets/minecart/4.2bpp b/gfx/tilesets/minecart/4.2bpp
new file mode 100644
index 000000000..08897f1da
--- /dev/null
+++ b/gfx/tilesets/minecart/4.2bpp
@@ -0,0 +1 @@
+ßðØ÷ÐðßðÙößðßðÞñïøèÿèøïøéþïøïøîù÷üôÿôü÷üõþ÷ü÷üöýûþúÿúþûþûþûþûþúÿýÿýÿýÿýÿýÿýÿýÿýÿ
\ No newline at end of file
diff --git a/gfx/tilesets/minecart/5.2bpp b/gfx/tilesets/minecart/5.2bpp
new file mode 100644
index 000000000..f66926bab
--- /dev/null
+++ b/gfx/tilesets/minecart/5.2bpp
@@ -0,0 +1 @@
+¿ÿ¿ÿ¿ÿ¿ÿ¿ÿ¿ÿ¿ÿ¿ÿß_ÿ_ÿßÿßÿßÿßÿßÿï?/ÿoÿ¯ÿïÿïÿïÿïÿ÷ÿWÿ·ÿ÷ÿ÷ÿ÷ÿ÷ÿûÿ[ÿ«ÿûÿûÿûÿûÿ
\ No newline at end of file
diff --git a/gfx/tilesets/minecart/6.2bpp b/gfx/tilesets/minecart/6.2bpp
new file mode 100644
index 000000000..5021b1c1f
--- /dev/null
+++ b/gfx/tilesets/minecart/6.2bpp
@@ -0,0 +1 @@
+ßðØÿÕÿÚÿßÿßÿßÿßÿïøèÿíÿêÿïÿïÿïÿïÿ÷üôÿõÿöÿ÷ÿ÷ÿ÷ÿ÷ÿûþúÿûÿúÿûÿûÿûÿûÿýÿýÿýÿýÿýÿýÿýÿýÿ
\ No newline at end of file
diff --git a/gfx/tilesets/minecart/7.2bpp b/gfx/tilesets/minecart/7.2bpp
new file mode 100644
index 000000000..59d6876aa
--- /dev/null
+++ b/gfx/tilesets/minecart/7.2bpp
@@ -0,0 +1 @@
+€ÿ‚ý¢Ý ß€ÿ„û„û€ÿÀÿÁþÑîÐïÀÿÂýÂýÀÿàÿàÿè÷è÷àÿáþáþàÿðÿðÿôûôûðÿðÿðÿðÿøÿøÿúýúýøÿøÿøÿøÿ
\ No newline at end of file
diff --git a/gfx/tilesets/minecart/8.2bpp b/gfx/tilesets/minecart/8.2bpp
new file mode 100644
index 000000000..bb22068b8
--- /dev/null
+++ b/gfx/tilesets/minecart/8.2bpp
@@ -0,0 +1 @@
+ÿ?ß?ßÿÿ_¿_¿ÿÿïïÿÿ/ß/ßÿÿ÷÷ÿÿïïÿÿûûÿÿ÷÷ÿÿýýÿÿûûÿ
\ No newline at end of file
diff --git a/gfx/tilesets/minecart/9.2bpp b/gfx/tilesets/minecart/9.2bpp
new file mode 100644
index 000000000..1c206fb79
--- /dev/null
+++ b/gfx/tilesets/minecart/9.2bpp
@@ -0,0 +1 @@
+ ÿÅÿªÿÝÿêÿÝÿÿÿÿÿÐÿâÿÕÿîÿõÿîÿÿÿÿÿèÿñÿêÿ÷ÿúÿ÷ÿÿÿÿÿôÿøÿõÿûÿýÿûÿÿÿÿÿúÿüÿúÿýÿþÿýÿÿÿÿÿ
\ No newline at end of file
diff --git a/main.asm b/main.asm
index e612dc339..fc2dbb05b 100644
--- a/main.asm
+++ b/main.asm
@@ -16435,16 +16435,16 @@ Tileset29Anim: ; 0xfc233
 
 Tileset23Anim: ; 0xfc27f
 ;	   param, function
-	dw $4770, $4645
-	dw $4774, $4645
-	dw $4768, $4645
-	dw $476c, $4645
-	dw $4760, $4645
-	dw $4764, $4645
-	dw $4758, $4645
-	dw $475c, $4645
-	dw $4750, $4645
-	dw $4754, $4645
+	dw MinecartTilePointer9,  AnimateMinecartTile
+	dw MinecartTilePointer10, AnimateMinecartTile
+	dw MinecartTilePointer7,  AnimateMinecartTile
+	dw MinecartTilePointer8,  AnimateMinecartTile
+	dw MinecartTilePointer5,  AnimateMinecartTile
+	dw MinecartTilePointer6,  AnimateMinecartTile
+	dw MinecartTilePointer3,  AnimateMinecartTile
+	dw MinecartTilePointer4,  AnimateMinecartTile
+	dw MinecartTilePointer1,  AnimateMinecartTile
+	dw MinecartTilePointer2,  AnimateMinecartTile
 	dw $0000, NextTileFrame
 	dw $0000, WaitTileAnimation
 	dw $0000, WaitTileAnimation
@@ -16962,7 +16962,52 @@ SafariFountainFrames: ; fc605
 ; fc645
 
 
-INCBIN "baserom.gbc", $fc645, $fc673 - $fc645
+AnimateMinecartTile: ; fc645
+; Read from struct at de:
+; 	Destination (VRAM)
+;	Address of the first tile in the frame array
+
+	ld hl, [sp+0]
+	ld b, h
+	ld c, l
+
+	ld a, [TileAnimationTimer]
+	and 7
+
+; Get frame index a
+	ld hl, .frames
+	add l
+	ld l, a
+	ld a, 0
+	adc h
+	ld h, a
+	ld a, [hl]
+
+; Destination
+	ld l, e
+	ld h, d
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	inc hl
+
+; Add the frame index to the starting address
+	add [hl]
+	inc hl
+	ld h, [hl]
+	ld l, a
+	ld a, 0
+	adc h
+	ld h, a
+
+	ld sp, hl
+	ld l, e
+	ld h, d
+	jr WriteTile
+
+.frames
+	db $00, $10, $20, $30, $40, $30, $20, $10
+; fc673
 
 
 NextTileFrame: ; fc673
@@ -17145,7 +17190,57 @@ TileAnimationPalette: ; fc6d7
 	ret
 ; fc71e
 
-INCBIN "baserom.gbc", $fc71e, $fcdc2 - $fc71e
+
+INCBIN "baserom.gbc", $fc71e, $fc750 - $fc71e
+
+
+MinecartTilePointers: ; fc750
+MinecartTilePointer1:
+	dw $92d0, MinecartTile1
+MinecartTilePointer2:
+	dw $92f0, MinecartTile2
+MinecartTilePointer3:
+	dw $93d0, MinecartTile3
+MinecartTilePointer4:
+	dw $93f0, MinecartTile4
+MinecartTilePointer5:
+	dw $93c0, MinecartTile5
+MinecartTilePointer6:
+	dw $92c0, MinecartTile6
+MinecartTilePointer7:
+	dw $94d0, MinecartTile7
+MinecartTilePointer8:
+	dw $94f0, MinecartTile8
+MinecartTilePointer9:
+	dw $95d0, MinecartTile9
+MinecartTilePointer10:
+	dw $95f0, MinecartTile10
+
+MinecartTile1:
+	INCBIN "gfx/tilesets/minecart/1.2bpp"
+MinecartTile2:
+	INCBIN "gfx/tilesets/minecart/2.2bpp"
+MinecartTile3:
+	INCBIN "gfx/tilesets/minecart/3.2bpp"
+MinecartTile4:
+	INCBIN "gfx/tilesets/minecart/4.2bpp"
+MinecartTile5:
+	INCBIN "gfx/tilesets/minecart/5.2bpp"
+MinecartTile6:
+	INCBIN "gfx/tilesets/minecart/6.2bpp"
+MinecartTile7:
+	INCBIN "gfx/tilesets/minecart/7.2bpp"
+MinecartTile8:
+	INCBIN "gfx/tilesets/minecart/8.2bpp"
+MinecartTile9:
+	INCBIN "gfx/tilesets/minecart/9.2bpp"
+MinecartTile10:
+	INCBIN "gfx/tilesets/minecart/10.2bpp"
+; fca98
+
+
+INCBIN "baserom.gbc", $fca98, $fcdc2 - $fca98
+
 
 LoadTradesPointer: ; 0xfcdc2
 	ld d, 0
