Didn't Blak have check-mate already in 29th move:
30. Nxg6 fxg6 checkmate??
Or I missed something?
Edit-- Okay, I did miss something: white King can now capture Pg4, since Be6 doesn't control the field g4 any more.
Typical oversight, all right - to forget changes on the board during calculation-in-head.
I couldn't resist, though, to check the game on chessbomb.com with their computer analysis.
"My" 29....Bg6 was still 4th best solution with 4.08 advantage!
29. ...Bg6+ 30. Nxg6 fxg6+ 31. Kxg4 Nxf2+ 32. Kf3 Rb8 33. Qxb8 Nxb8 34. Rh2 Kxh6 35. g3 Ne4 36. Rg2 Rd1 37. Be2 Nd2+ 38. Kf2 Rc1 39. Rg1 Ne4+ 40. Kg2 Rc3