Search your favorite song right now

1. Diana Ross - I Will Survive (Neidex Remix)

Diana Ross - I Will Survive (Neidex Remix)

0600 Records: Release #08 FEEL FREE TO UPLOAD THIS TRACK ON YOUTUBE! INCLUDE SOCIAL MEDIA LINKS TO 0600 RECORDS, NEIDEX & THE DOWNLOAD LINK IN THE DESCRIPTION! 0600 Records is back with a funky Nu Disco remix of a classic: Neidex remixes Diana Ross' "I Will Survive" ! Enjoy the soulful lyrics with some funky disco chords that will get you on the dance floor in no time. ____________________________________________ Follow Neidex Soundcloud: @neidex Neidex on Social Media: www.facebook.com/neidexmusic www.twitter.com/neidexmusic www.instagram.com/alexneid

nothing at of , which is


2. Ed Sheeran - Galway Girl (Danny Dove & Offset Remix)

Ed Sheeran - Galway Girl (Danny Dove & Offset Remix)

0600 Records: Release #07 0600 Records is back with an incredible Future House remix of Ed Sheehan's summer hit "Galway Girl" by Danny Dove and Offset! Enjoy Ed Sheeran's original lyrics with a sick old school Future House drop. ____________________________________________ Follow Offset and Danny Dove on Soundcloud: https://soundcloud.com/offset_music https://soundcloud.com/dannydovepromo Offset and Danny Dove on Facebook: https://www.facebook.com/OffsetMusicOfficial/ https://www.facebook.com/danny.dove

nothing at of , which is


3. Nymphonics ft. Chris James - Dance With Me (Original Mix)

Nymphonics ft. Chris James - Dance With Me (Original Mix)

0600 Records: Release #02 Starting off this week with a track by Nymphonics. WARNING: the catchy vocals and the bassline will definitely be stuck in your head for a while ;) . Enjoy the free download! ____________________________________________ Follow Nymphonics on Soundcloud: @nymphonics

nothing at of , which is


4. Neidex - What I Said (Original Mix)

Neidex - What I Said (Original Mix)

0600 Records: Release #05 Ending this week with a house banger by Neidex, remixing none other than the infamous Donald Trump. Neidex's banging beat accompanied by Trump's sick flow will get you on the dance floor in no time ;) ____________________________________________ Follow Neidex on Soundcloud: @neidex Neidex on Facebook: https://www.facebook.com/neidexmusic

nothing at of , which is


5. Neidex & Croger - Cravin' (Original Mix)

Neidex & Croger - Cravin' (Original Mix)

0600 Records: Release #01 First upload! Sick track by the young producers Neidex and Croger. Enjoy the free download! ____________________________________________ Follow Neidex on Soundcloud: https://soundcloud.com/neidex Follow Croger on Soundcloud: https://soundcloud.com/crogermusic

nothing at of , which is


6. Duki - #ModoDiablo - UH! (Neo Pistéa, Duki, YSY A) Prod : 0600

Duki - #ModoDiablo - UH! (Neo Pistéa, Duki, YSY A) Prod : 0600

Una producción de Sangre Real Studios www.Sangrerealstudios.com Shot by @pelsii_ Edit por @cadahb Arte y producción por @34734_sr Maquillaje @gu_chii Productor general @mr.nacha Asistente de producción @ayegomez y @luulasaccone Por : @neopistea_tonythekid @dukissj @ysyashakur Ellas : @chulimane @adroheragustina @gu_chii @lusangiacomo_ @pilimosh

nothing at of , which is


7. Nymphonics - Positivity (Original Mix)

Nymphonics - Positivity (Original Mix)

0600 Records: Release #04 Ending the weekend with a track by our boy Nymphonics. The incredibly catchy drop, layering different melodies and synths, will definitely make you dance. Enjoy the free download! ____________________________________________ Follow Nymphonics on Soundcloud: @nymphonics

nothing at of , which is


8. Neidex - KLH (Original Mix)

Neidex - KLH (Original Mix)

0600 Records: Release #03 Starting off this week with a track by Neidex. Catchy, melodic vibes blending with great vocals. Enjoy the free download! Acapella downloaded from freevocals.com ____________________________________________ Follow Neidex on Soundcloud: @neidex

nothing at of , which is


9. Mike Guad - Grindin' (Original Mix)

Mike Guad - Grindin' (Original Mix)

0600 Records: Release #06 Starting this week with a sick track by Mike Guad. Enjoy the free download! ____________________________________________ Follow Mike Guad on Soundcloud: @mike-guad Mike Guad on Facebook: https://www.facebook.com/MikeGuadOfficial

nothing at of , which is




12. Neidex - Move Your Body (Marshall Jefferson)

  • Published: 2018-02-04T13:37:32Z
  • By Neidex
Neidex - Move Your Body (Marshall Jefferson)

Feel free to upload this track on YouTube, as long as you include the download link and my Soundcloud in the description Decided to remix one of my favourite tracks of all time: "Move Your Body" by the one and only Marshall Jefferson. Enjoy the free download! www.facebook.com/neidexmusic www.twitter.com/neidexmusic www.instagram.com/alexneid Contact/Bookings: [email protected]

nothing at of , which is


13. Simply Deep - Radar Radio (13/02/16)

Simply Deep - Radar Radio (13/02/16)

Big ups to everyone that locked in when it was live, and to all the producers that sent the fire over. You can check out the whole podcast and Guestmix from https://soundcloud.com/greywan here: https://www.mixcloud.com/RadarRadioLDN/simply-deep-w-special-guest-greywan-13th-february-2016/ Thanks to everyone that's supporting! Big up www.soundcloud.com/djsagepay on the logo design Tracklist: Wen - You Know (Maribor VIP) [Unreleased] Filter Dread- True Love [Unreleased] Monotronique - Switch [Forthcoming Simply Deep] Nuvaman - 0600 [Forthcoming TAR Records] LKY - Ebok [Unreleased] Denham Audio - Undulate (Silas & Snare Surgeon Remix) [Heretic] Sensei - Outlet [Forthcoming Simply Deep] Gronos - Faithful (Utah? Remix) [Unreleased] Jade H - Worth It (Joedan Remix) (Radio Edit) [Unreleased] Banshee - High Let Me Fly (Maribor Mix) [Free Download] Flukes X Cassie - Me & Wifey (GUNDAM Edit) [Unreleased] Sherry S - Untitled [Unreleased] Kahn & My Nu Leng - Ruins (Cozen Bootleg) [Unreleased] **soz about the dodgy blend** Kahn - Fierce (Flint Edit) [Unreleased] **soz about the dodgy blend pt2** Farsight - Hymn Of Safe Passage (Luru Remix) [Forthcoming Prjkts] TSVI x Loom x Luru - Blips [Unreleased] Wallwork - Final Fantasy [Unreleased] Botaz & Ballast - Luv Genius (Farsight Remix) [Forthcoming HEAT Records] Fable - Best Thing [Unreleased] KXVU & Foul Matta - Gutterbug (Polonis Dubplate Refix) [Southpoint] Fable - Roots (VIP) [Unreleased] Sepia - Remember [Unreleased] LTHL - XXIII [Forthcoming District Sound] Rapture 4D - Pink Shades [Unreleased] Gundam - Why Why [Unreleased] Mariah Carey - Shake It Off (Detroit Edit) [Unreleased] Janet Jackson - Curtains (Detroit Redux) [Unreleased] Muttley - The People [Forthcoming Imperial Audio] Wallwork - Rebel Riddim [Unreleased] Big Deann - 2004 [Unreleased] Arctic - The Chairman [Unreleased] Charlux - Chanel Handbag [Unreleased] Neffa-T - Poison Clan (VIP) [Unreleased] Kahn & Neek - Percy (JFO Remix) [Unreleased] Skream & Zed Bias - Badness (Loftiq's N0rty Edit) [Unreleased] Cally - Just Us (Radar FM Edit) [Unreleased] Capo Lee - Liff (Dunham Refix) [Unreleased] ??? - Freezing Cold (Scruloose Remix) [Self-Released] Sully - Solitaire (Mang Edit) [Unreleased] Crafty - Stahp (Minglou Dub) [Unreleased] Limbic - Untitled [Unreleased] Cally - Jezzy's In My City [Unreleased] Farsight - Hanged Man [Prjkts] Champion - Crystal Meth (Vern & Milla's Go Fuck 'Urself Spesh [Unreleased] Commodo & Lurka - Airtight (Loftiq's Tupperware Edit) [Unreleased] Muttley - Ice Temple [Southpoint] Chrissy Grimez - Yoltenhizer (Polonis Remix) [Unreleased] Fable - Specialist [Unreleased]

nothing at of , which is


14. #076 - Eagle Sessions - 26/07/16 + Guestmix by Neptun 505

  • Published: 2016-07-26T11:34:06Z
  • By AlBird
#076 - Eagle Sessions - 26/07/16 + Guestmix by Neptun 505

Eagle Sessions #076 are out and about now!!! What have we got for you this week? Brand new tunes for example by Austrian fellow Florian Kaltstrom on Observatory Music with the EP 'E'. Also something new from DJ Tonio back on Suara with Closer, Faster Stronger in the Olivier Giacomotto Remix as well as Tronic mastermind Christian Smith with Blast Off on his very own label. Guestmix this time is by Polish DJ and producer Neptun 505 who's style is somewhere between Progressive-, Deep- and Tech House and he provided an really inspiring set i think...A definit must-listen. Check his music out on Setlist 1st hour 1. John Acquaviva, Manuel De La Mare - Sacrilicious (Olivier Giacomotto Remix) 2. Florian Kruse, Hendrik Burkhard - Sirens (Original Mix) 3. Gabe, Dashdot - Delusion (Original Mix) 4. Anna Reusch - Arabian Nights (Ellroy Remix) 5. Die Vogelperspektive - Can't Be Bad (Markus Homm Remix) 6. Ninetoes - Lay Down (Original Mix) 7. Salvatore Bruno - These Days (Original Mix) 8. DJ Tonio - Closer, Faster, Stronger (Olivier Giacomotto Remix) 9. Speaking Minds - Sharpless 248 (Alex Niggemann Re-Shape) 10. Adrian Hour - Like This (Original Mix) 11. Florian Kaltstrom - E2 (Original Mix) 12. Christian Smith - Blast Off (Original Mix) Setlist 2nd hour 01. Aluria - Zion (Neptun 505 Remix) [Absurd State] 02. Matt Holliday ft._Nel - Elysian Fields (Subconscious Tales Remix) [Electronic Tree] 03. Some Little Things - The Kingdom Of Thieves (Tuxedo Remix) [Massive Harmony Records] 04. Michael A - Solid (Li-Polymer Rmx) [Superordinate Music] 05. Marboc - Curtain (Original Mix) [Electronic Tree] 06. Robert R. Hardy - Chicago Sunrise (E.F.G. Remix) [Hydrogen] 07. Tim Green - Only Time Remains (Original Mix) [Get Physical Music] 08. Zusammenklang - 107 (Original Mix) [SOSO] 09. Plicherss - Dragon (Original Mix) [Electronic Tree] 10. Monojoke - Deceitful (Forerunners Remix) [Incepto] Eagle Sessions are airing at the following radio stations: >>>local times apply>Mondays:>Tuesdays:>Wednesdays:>Thursdays:>Fridays:>Saturdays:>Sundays:

nothing at of , which is


15. ARIES BDAY BASH 2017 - CLUB PST - BIRMINGHAM

ARIES BDAY BASH 2017 - CLUB PST - BIRMINGHAM

ARIES BDAY BASH 2017 ADVERT FEAT THE ORIGINAL CHESHIRE CAT RECORDED AT KINGSTON EXPRESS RECORDS BIRMINGHAMS NUMBER ONE LABEL AND STUDIO.... PAYBACK PROMOTIONS PRESENTS .... ARIES BDAY BASH 2017 SAT 8TH APRIL CLUB PST - 71 LOMBARD ST - DIGBETH - BIRMINGHAM - B12 0QR DOORS OPEN - 2100 - 0600 POWERED BY THE MIGHTY VOID SOUNDSYSTEM CONFIRMED ARTISTS .... ARIES NICKY BLACKMARKET MC SPYDA NAVIGATOR MC JACKY MURDA KING YOOF OSH KOSH STIVS JINX KELVIN 373 GOLD DUBS SELECTA J-MAN GARDNA CAUTIOUS EUPHONIQUE HOSTED BY CHESHIRE CAT MARGAMAN MC BUSTA TICKETS ON SALE VIA THE TICKETSELLERS ONLY >>> https://www.theticketsellers.co.uk/tickets/aries-bday-bash-2017/10043449 https://www.facebook.com/events/182339102255138/

nothing at of , which is


16. Lurob - January 11th Guest Mix 2014 - Radial Blur - MHYH Radio

Lurob - January 11th Guest Mix 2014 - Radial Blur - MHYH Radio

As promised here is the 2nd part of the upload from our 2014 kickoff show. This set from Tango Recordings' Lurob takes the vibe into more soulful, sexy territory with a stack of house classics. You can find Lurob's releases on Beef Records, Phobic Recordings, Maracuja, Coyote Cuts, Native Soul, Juiced, Greenhouse, Seventy Four, So Sound, Kinjo Music, Native Soul, Jump Recordings, Uniform Records, Clique Trax, Tangible, Uniting Souls Music, Housewarming, Funky Farm and Gimme Some records. http://www.residentadvisor.net/dj/lurob/biography https://soundcloud.com/lurob https://www.facebook.com/lurob Radial Blur is every Thursday night 8-10pm PST 11-1am EST 0400-0600 GMT on MHYH Radio www.myhouseyourhouse.net Tracklist forthcoming

nothing at of , which is


17. Aerotonin - Subsist Promo Mix

Aerotonin - Subsist Promo Mix

Aerotonin delivers a captivating mix for Subsist, giving us a flavour of whats to come ahead of his set at our next event Tracklist: Edmondson - Under The Carling Sign [EMF] French Fries - D'Angelo [ClekClekBoom] Maribor - Kevlar [Unreleased] Femme En Fourrure - Watcher [Convex Industries] Edmondson - Authentic [EMF] Nuvaman - 0600 [TAR Records] Jubley - Orient [Unreleased] Beyonce - Run The World Girls (Kito 'Swamp 81 VIP' Remix) [Free Download] Phirxus - Prism Of Fate [Unreleased] Azealia Banks - Chasing Time (Lisson Remix) [Free Download] Lone - Counter Glow (Yak Refix) [Unreleased] Femme En Fourrure - Dirty Blonde (French Fries & Manare Remix) [Discobelle] Air Max '97- Progress Memory (Neana Remix) [Liminal Sounds] Femme En Fourrure - Palms Glide Up Thighs [Neana Remix] [Free Download] Aerotonin - JC Denton [Unreleased] Wallwork - Final Fantasy [Unreleased] Monotronique - Desert Space (Aerotonin Remix) [Forthcoming Simply Deep] LTHL - Colours [Free Download] Fallow - Pepperpot [Unreleased] Yak - Lod's Tribe [Unreleased] Commodo, Gantz, Kahn - Crystal Collect (Bushbaby Remix) [Unreleased] Event Details: https://www.facebook.com/events/1678143579108226/

nothing at of , which is


18. Bitcrime lv.1 act.2 (version 2.0)

  • Published: 2011-12-08T11:48:09Z
  • By fastabit
Bitcrime lv.1 act.2 (version 2.0)

; $420 = MD?L?tRT ; ; M = 1 if moving, 0 if still ; D = direction (0 = facing left, 1 = facing right) ; ? = ? ; L = on ladder ; ?A = set when Megaman is getting off ladder at top ; t = set when throwing something while standing ; R = set to make Megaman get stunned by Gutsman's eart-shaking jump ; T = set to make Megaman transform ; ; R+T both set = megaman getting hit ; ; for enemies it works as follows ; ; $420,X = HDIT?BMC (ObjectFlags) ; ; H = object getting hit by Megaman's bullet ; D = direction (0 = facing left, 1 = facing right) ; I = set if invisible ; T = Temporary object that disappears after some time (bonus items etc) ; ? = ? ; B = set if object can collide with Megaman's bullets (ghostlike otherwise) ; M = set if object can collide with Megaman (ghostlike otherwise) ; C = set if object collides with BG ; ; freezing $640 for enemies freezes them in a certain state... ; freezing $440 for enemies freezes them in a certain frame... ; ; MegamanSpriteNum ($400): ; ; These are sprite frames. ; These values correspond to what Megaman does. ; If you set it to a weird value like $1A, it will appear as a shot instead. ; Examples of these weird values are shown in MegamanWeaponFireData. ; It is the same for ObjectSpriteNum and MegamanSpriteNum. ; ; #$00 = 00000000 = standing ; #$01 = 00000001 = firing megablaster (while standing) ; #$02 = 00000010 = standing while carrying gutsman rock ; #$03 = 00000011 = moving slowly (also causes slow movement!) ; #$04 = 00000100 = firing megablaster (while standing) ; #$05 = 00000101 = moving slowly while carrying gutsman rock ; #$06 = 00000110 = running ; #$07 = 00000111 = running while firing megablaster ; #$08 = 00000100 = running while carrying gutsman rock ; #$09 = 00001001 = jumping/falling ; #$0A = 00001010 = firing megablaster while jumping ; #$0B = 00001011 = jumping while carrying gutsman rock ; #$0C = 00001100 = slowing down after running (also causes movement) ; #$0F = 00001111 = hitting ground ; #$10 = 00010000 = walking with gun ; #$12 = 00010010 = getting hit by enemy ; #$13 = 00010011 = Getting stun by Gutsman's earth-shaking jump ; #$14 = 00010100 = transforming (when entering stage or after pause) ; #$15 = 00010101 = On ladder ; #$16 = 00010110 = Firing while on ladder ; #$17 = 00010111 = Getting off at top of ladder ; #$18 = 00011000 = Also firing on the ladder? ; #$19 = 00011001 = Getting damage (sweatdrops) ; #$31 = 00110001 = "READY" ; #$6E = 01101110 = Throwing something ; #$6F = 01101111 = Throwing something while jumping/falling ; #$70 = 01110000 = Throwing something while on ladder ; ; ;#$C0 = "P" ;#$C1 = Cutman ;#$C2 = Iceman ;#$C3 = Bombman ;#$C4 = Fireman(?) ;#$C5 = Elecman ;#$C6 = Gutsman (rock either carried by megaman or airborne) ;#$C7 = Magnet beam ; ; $41 = #1 if game paused with SELECT, #0 otherwise ; New weapon capsule uses $61F MiscCounter1 = $3C ;Counter used for various purposes ; RLDUSsBA (s = select, S = START) ; Keys held down on this frame JoyPads = $14 Joypad0 = Joypads Joypad1 = Joypads+1 JoyPadsOld = $16 Joypad0old = JoypadsOld Joypad1old = JoypadsOld+1 ForcedInputFlag = $68 ForcedInputData = $69 ; Keys pressed on this frame JoyD = $18 JoyD0 = JoyD JoyD1 = JoyD+1 ScrollPosX = $1A ScrollPosScreen = $1B ScrollPosY = $1E ; $0D is used for plenty of purposes. Here's one. SpriteCounter = $0D NMI_GfxUpdateDone = $1F ;in Rockman2, at $1D FrameCounter = $23 ;In Rockman2, at $1C RefObjectNum = $2F NumberOfFramesSinceShooting = $61 WritePaletteParam = $34 PaletteUpdateDelay = $37 LastRestartPointType = $AB ;0=level beginning, #$0C = point A, #$18 = point B PreviousEnemyIndex = $8B CurrentEnemyIndex = $8C ZigZagFireStatus = $8F AutoSpawnObjectFFcounter = $92 ;unknown CurrentBeginScreen = $27 ;In Rockman2, $14 ; ^The screen that begins the current strip. Only updated in transitions. CurrentEndScreen = $28 ;In Rockman2, $15 ; ^The screen where the current strip ends. Only updated in transitions. CurrentOrderNum = $29 ;In Rockman2, $38 ; ^Pointer to the order table. Only updated in transitions. ObjectReceivedHitType = $53 UseTempScrollX = $B4 TempScrollPosX = $B2 TempScrollPosScreen = $B3 ScreenMovedFlag = $8D ;Bit 0: (&01) = New enemies may need to be loaded (screen has moved) ;Bit 6: (&40) = Movement forward? 0=backward ActivesLowerIndex = $8E ;ActivesLowerIndex points to the first Active that may need to be cared of. ;Actives before that index are of no concern. RoomActiveTable = $720 IgnoreStageSelection = $BC SoundCodeParameter = $A7 CurrentRoomMonsterGraphicsIndex = $7A BonusPearlCount = $AE ; Max: 99 RandomSeed = $46 ; In Rockman2, at $4A LevelClearScoreInThousands = $3D CurrentBank = $42 ExtraLives = $A6 DrawScoreAndMetersFlag = $BB WeaponsOwned = $5D ; (MFCIGEB0) WeaponSelect = $5F Meters = $6A ; (from 0-28) ; 0 = "P" (just the old megablaster) ; 1 = Cutman ; 2 = Iceman ; 3 = Bombman ; 4 = Fireman ; 5 = Elecman ; 6 = Gutsman ; 7 = Magnet beam MetersFraction = $9E ; (index 1 not used) WeaponFiring = $60 ; $60 = non-zero if any of Megaman's weapons are at the screen ; &7 = weapon number ; |$40 = phase A ; |$80 = phase B ; Usually both phases are used at same time, but Gutsblock has two phases. TotalObjects = $54 ObjectSpriteNum = $400 ObjectFlags = $420 ;also used for boss moves in stage select ObjectUnknown440 = $440 ; low 4 bits: >0 if taken damage this frame ; high 4 bits: possibly invulnerability timer? ObjectPosScreen = $460 ; aka. screen ID ObjectPosX = $480 ObjectPosXfraction = $4A0 ;Xpos fractional part ObjectXSpeed = $4C0 ObjectXSpeedFraction = $4E0 ObjectPosY = $600 ObjectPosYfraction = $620 ObjectFireDelay = $640 ;uncertain!! but delays objects somehow ObjectYSpeedFraction = $660 ObjectYSpeed = $680 ObjectLifeCycleCounter = $6A0 ObjectLifeMeter = $6C0 ObjectType = $6E0 ; enemy ID LiftIndex = $9A ;number of active lifts LiftUnknown9B = $9B ;not table LiftXSpeedFraction= $9C ;not table LiftXSpeed = $9D ;not table LiftUnknown9E = $9E ;not table LiftPosScreen = $700 ;table LiftPosX = $708 ;table LiftPosY = $710 ;table LiftDirection = $718 ;table LiftXMovement = $06 ;(temporary meaning..) LiftXScreenMovement = $07 MagnetBeamLength = $5A0 MagnetBeamAge = $5B0 ;0=not active, $9C = initial age MagnetBeamPosX = $5C0 MagnetBeamPosScreen = $5D0 MagnetBeamCyclePos = $5E0 MagnetBeamPosY = $5F0 IssuedSoundsList = $580 NumIssuedSounds = $45 MegamanBlinkState = $55 ; Timer: 0 = not blinking. #$6F = max BossBlinkState = $56 SpriteTable = $0200 CurrentSpriteData = SpriteTable+4 (array of 4-byte records) ; Structure: ; 0 = Y coordinate ; 1 = Tile number ; 2 = Sprite attributes ; 3 = X coordinate RawPPUtransferSize = $5E RawPPUtransferAddress = $0380 RawPPUtransferBuf = $0382 TSAPPUtransferSize = $1C TSAPPUtransfer0NTaddress = $0300 TSAPPUtransfer0NTdata = $0302 TSAPPUtransfer0AttrAddress = $0312 TSAPPUtransfer0AttrData = $0314 TSAPPUtransfer0AttrAndMask = $0314 TSAPPUtransfer0AttrOrMask = $0315 PPU2000value = $FF PPU2001value = $FE SpritePalettes = $03E0 BGPalettes = $03D0 UnknownPalettes = $03F0 GutsmanStompCounter = $47 MegamanWalkTimer = $94 ;perhaps this meaning. MegamanStallTimer = $95 ;perhaps this meaning. CurrentTileState = $30 ;CurrentTileState bits are: ; #$10: (bit 4) - Rockman is climbing up ; #$08: (bit 3) - Ladder above that ; #$04: (bit 2) - Ladder above ; #$02: (bit 1) - Ladder here ; #$01: (bit 0) - there is a ladder below this tile ; ; If both bits 2,3 are clear, this is a ladder top (or not ladder) ; If the value is #$01, it's a ladder top CurrentStage = $31 BossCurrentStrategy = $3E ;doubles as the boss number BossVariable3F = $3F ;unknown meaning BossVariable43 = $43 ; unknown meaning, indicates strategy somehow BossVariable44 = $44 ; counter of some kind FightingBossNum = $AC ; $AC = boss we're fighting (value gets set at boss fight, invalid otherwise) ; 0 = Cutman ; 1 = Iceman ; 2 = Bombman ; 3 = Fireman ; 4 = Elecman(?) ; 5 = Gutsman ; 6 = Stone giant CurrentRoomPointer = $06 ;two 16-bit pointers, occupying 06 07 08 09 CurrentStripeEndType = $26 ; &3: ; 0=right ; 1=up ; 2=left ; 3=down CapsuleObtained = $AD TeleportEnteredFlag = $B0 GutsmanWeaponTargetActive = $52 ; In weapon select menu (accessed by START button), ; $5F gets set as follows: ; ; 0 = "P" ; 1 = Bombman ; 2 = Elecman ; 3 = Gutsman ; 4 = ; 5 = Cutman ; 6 = ; 7 = Magnet beam Score = $72 RoomBlockData = $8000 RoomBlockPals = $8300 RoomOrderTable = $8C00 RoomPointerTable = $8C30 RoomLayoutTable = $8C70 RoomSpritePalettes1 = $8CA0 ;normal stages RoomSpritePalettes2 = $8CD0 ;wily stages RoomTileTable1 = $8D00 ;normal stages RoomTileTable2 = $8D20 ;wily stages RoomMonsterIndex = $8D40 ;something common to both RoomMonsterGraphics = $8D80 ;something common to both RoomActives1 = $8E00 ;normal stages RoomActives2 = $8EA0 ;wily stages RoomShutterBlockData = $8F40 RoomShutterBlockPals = $8F70 RoomShutterInfo = $8F80 ;;;;;;;;;;;; BANK 7 BEGIN ;;;;;;;;;;;;;;;;;; Bank 7: 1C000-112k loaded into memory $C000(always) | - all the CODE of the game 0001C000: .byte 0,1,2,3,4,5,6,7 ;This table must be present in ROM for bankswitching to work properly Reset: 0001C008: 78 sei 0001C009: A9 01 lda #$01 0001C00B: 8D 00 20 sta $2000 0001C00E: A9 06 lda #$06 0001C010: 8D 01 20 sta $2001 0001C013: A9 05 lda #$05 0001C015: 8D 05 C0 sta $C005 0001C018: 4C 00 90 jmp Reset2 ; $9000 ; ; if MegamanStallTimer != 0 then don't get joypad input in this frame ; ; if ForcedInputFlag != 0 then Joypad0 = ForcedInputData ; NextFrame 0001C01B: A5 95 lda MegamanStallTimer 0001C01D: D0 08 bne + ; $C027 0001C01F: A5 14 lda JoyPad0 0001C021: 85 16 sta JoyPad0old 0001C023: A5 15 lda JoyPad1 0001C025: 85 17 sta JoyPad1old + ; Wait until our NMI's done what an NMI's gotta do... 0001C027: A9 00 lda #$00 0001C029: 85 1F sta NMI_GfxUpdateDone - 0001C02B: A5 1F lda NMI_GfxUpdateDone 0001C02D: F0 FC beq - ; $0001C02B 0001C02F: A5 68 lda ForcedInputFlag 0001C031: F0 07 beq + ; $0001C03A 0001C033: A5 69 lda ForcedInputData 0001C035: 85 14 sta JoyPad0 0001C037: 4C 4B C0 jmp ++ ; $C04B + 0001C03A: A5 95 lda MegamanStallTimer 0001C03C: D0 1B bne +++ ; $0001C059 0001C03E: 98 tya 0001C03F: 48 pha 0001C040: 8A txa 0001C041: 48 pha 0001C042: 20 8D D5 jsr ReadJoypads ; $D58D 0001C045: 68 pla 0001C046: AA tax 0001C047: 68 pla 0001C048: A8 tay 0001C049: A5 14 lda JoyPad0 ++ 0001C04B: 45 16 eor JoyPad0old 0001C04D: 25 14 and JoyPad0 0001C04F: 85 18 sta JoyD0 0001C051: A5 15 lda Joypad1 0001C053: 45 17 eor JoyPad1old 0001C055: 25 15 and Joypad1 0001C057: 85 19 sta JoyD1 +++ 0001C059: 60 rts StageClear ; What happens in regular stages. ;1. Play item sound ;2. Play stage clear music ;3. Load levelend gfx ;4. Remove all objects except Megaman ;5. Delay 383 frames ;6. Hide energy bars ;7. Draw first patch of text ;8. Halt Megaman ;9. Calculate score, 1000 points per frame ;10. Delay 64 frames ;11. Draw second patch of text ;12. Calculate bonus pearls, one per frame (3000 points each) ;13. Delay 383 frames ;14. Reboot game without clearing game status ; 0001C05A: A9 00 lda #$00 0001C05C: 85 3E sta BossCurrentStrategy 0001C05E: A9 FE lda #$FE 0001C060: 20 77 C4 jsr IssueSound ; $C477 0001C063: A5 AC lda FightingBossNum 0001C065: C9 0A cmp #$0A 0001C067: D0 08 bne PlayStageClearMusic ; $0001C071 0001C069: A9 00 lda #$00 0001C06B: 20 77 C4 jsr IssueSound ; $C477 0001C06E: 4C 79 C0 jmp ++ ; $C079 ; Play stage clear melody PlayStageClearMusic 0001C071: A9 04 lda #$04 0001C073: 20 77 C4 jsr IssueSound ; $C477 0001C076: 20 04 C2 jsr ClearAllObjectsExceptMegaman ; $C204 ++ 0001C079: A9 00 lda #$00 0001C07B: 85 5C sta $5C 0001C07D: A9 B7 lda #$B7 0001C07F: A2 0B ldx #$0B 0001C081: A0 08 ldy #$08 0001C083: 20 BE F0 jsr DoPPUtransferRoutineF0BE 0001C086: A5 AC lda FightingBossNum 0001C088: C9 0A cmp #$0A 0001C08A: D0 0A bne + ; $C096 ; Whole game cleared? 0001C08C: A9 FF lda #$FF 0001C08E: 20 16 D1 jsr TimeDelayWithAllObjectsHalted 0001C091: A9 FF lda #$FF 0001C093: 20 16 D1 jsr TimeDelayWithAllObjectsHalted + ;Nope 0001C096: A9 80 lda #$80 0001C098: 20 16 D1 jsr TimeDelayWithAllObjectsHalted 0001C09B: A9 FF lda #$FF 0001C09D: 20 16 D1 jsr TimeDelayWithAllObjectsHalted 0001C0A0: A5 AC lda FightingBossNum 0001C0A2: C9 0A cmp #$0A 0001C0A4: D0 08 bne + ; $C0AE 0001C0A6: 20 04 C2 jsr ClearAllObjectsExceptMegaman ; $C204 0001C0A9: A9 F8 lda #$F8 ; Disable Megaman object 0001C0AB: 8D 00 06 sta ObjectPosY+0 ; $0600 + 0001C0AE: E6 BB inc DrawScoreAndMetersFlag 0001C0B0: A9 00 lda #$00 0001C0B2: 85 2F sta RefObjectNumber 0001C0B4: A2 02 ldx #$02 ;into the given slot 0001C0B6: 20 63 C1 jsr SetNObjects 0001C0B9: A2 05 ldx #$05 - 0001C0BB: 95 B5 sta $B5,x 0001C0BD: CA dex 0001C0BE: 10 FB bpl - ; $C0BB 0001C0C0: EE A0 06 inc ObjectLifeCycleCounter+0 - 0001C0C3: A2 00 ldx #$00 0001C0C5: 20 81 C1 jsr LevelEndAddThousandPoints 0001C0C8: 20 AC C1 jsr $C1AC 0001C0CB: 20 1B C0 jsr NextFrame ; $C01B 0001C0CE: C6 3D dec LevelClearScoreInThousands 0001C0D0: D0 F1 bne - ; $C0C3 ; wait 1 second 0001C0D2: A9 40 lda #$40 0001C0D4: 20 0F C2 jsr TimeDelayNoMove ; $C20F 0001C0D7: A9 00 lda #$00 0001C0D9: 85 2F sta RefObjectNumber 0001C0DB: A2 05 ldx #$05 0001C0DD: 20 63 C1 jsr SetNObjects 0001C0E0: EE A0 06 inc ObjectLifeCycleCounter+0 0001C0E3: A5 AE lda BonusPearlCount 0001C0E5: F0 12 beq + ; $C0F9 - 0001C0E7: A2 03 ldx #$03 0001C0E9: 20 81 C1 jsr LevelEndAddThousandPoints 0001C0EC: 20 AC C1 jsr $C1AC 0001C0EF: 20 BE C1 jsr $C1BE 0001C0F2: 20 1B C0 jsr NextFrame ; $C01B 0001C0F5: C6 AE dec BonusPearlCount 0001C0F7: D0 EE bne - ; $C0E7 + 0001C0F9: 20 31 D1 jsr UpdateGraphics ; $D131 0001C0FC: 20 AC C1 jsr $C1AC 0001C0FF: 20 BE C1 jsr $C1BE ; Wait 6-7 seconds 0001C102: A9 FF lda #$FF 0001C104: 20 0F C2 jsr TimeDelayNoMove ; $C20F 0001C107: A9 80 lda #$80 0001C109: 20 0F C2 jsr TimeDelayNoMove ; $C20F 0001C10C: 20 95 D4 jsr DisableNMI&PPU ; $D495 0001C10F: C6 BB dec DrawScoreAndMetersFlag 0001C111: A2 FF ldx #$FF 0001C113: 9A txs 0001C114: A9 05 lda #$05 0001C116: 8D 05 C0 sta $C005 0001C119: 85 42 sta CurrentBank 0001C11B: A6 31 ldx CurrentStage 0001C11D: E0 09 cpx #$09 0001C11F: F0 16 beq + ; $0001C137 0001C121: E0 06 cpx #$06 0001C123: B0 16 bcs ++ ; $0001C13B ; Add new weapon/set boss defeated flag 0001C125: A5 5D lda WeaponsOwned 0001C127: 1D 48 C1 ora WeaponsOwnedTab,x 0001C12A: 85 5D sta WeaponsOwned 0001C12C: A9 00 lda #$00 0001C12E: 85 BC sta IgnoreStageSelection 0001C130: 85 55 sta MegamanBlinkState 0001C132: 85 68 sta ForcedInputFlag 0001C134: 4C 5A 90 jmp $905A ; Prepare for ending + 0001C137: E6 31 inc CurrentStage 0001C139: C6 BB dec DrawScoreAndMetersFlag ; Prepare for Wilystage ++ 0001C13B: A9 00 lda #$00 0001C13D: 85 B4 sta UseTempScrollX 0001C13F: 85 AB sta LastRestartPointType 0001C141: 85 68 sta ForcedInputFlag 0001C143: E6 31 inc CurrentStage 0001C145: 4C 6A 90 jmp $906A ;C148 C I B F E G WeaponsOwnedTab .byte $20, $10, $02, $40, $04, $08 ;See also: Lbl_b50d ;C14E IndexIntoTheActiveThatPreventsEscapingRematch .byte 0*6, 5*6, 3*6, 4*6, 1*6, 6*6 ;indexes into RoomActiveTable ; Objects in order: ; 0: HP bar ; 1: Score XPosTable1 .db $24, $80, $A0, $80, $88 YPosTable1 .db $A0, $40, $58, $68, $80 SpriteNumTable1 .db $80, $87, $89, $88, $8A, $89 ; SetNObjects 0001C163: 20 7B F6 jsr InitActor 0001C166: BD 53 C1 lda XPosTable1,x 0001C169: 9D 80 04 sta ObjectPosX,x 0001C16C: BD 58 C1 lda YPosTable1,x 0001C16F: 9D 00 06 sta ObjectPosY,x 0001C172: BD 5D C1 lda SpriteNumTable1,x 0001C175: 9D 00 04 sta ObjectSpriteNum,x 0001C178: A9 00 lda #$00 0001C17A: 9D 20 04 sta ObjectFlags,x 0001C17D: CA dex 0001C17E: D0 E3 bne SetNObjects 0001C180: 60 rts ; X = index to the digits LevelEndAddThousandPoints 0001C181: A0 03 ldy #$03 0001C183: 18 clc 0001C184: A9 01 lda #$01 - 0001C186: 75 B5 adc $B5,x 0001C188: C9 0A cmp #$0A 0001C18A: 90 02 bcc + ; $0001C18E 0001C18C: E9 0A sbc #$0A + 0001C18E: 95 B5 sta $B5,x 0001C190: A9 00 lda #$00 0001C192: E8 inx 0001C193: 88 dey 0001C194: D0 F0 bne - ; $0001C186 0001C196: A9 10 lda #$10 ; Add 1,000 points to score 0001C198: 85 05 sta $05 0001C19A: 20 40 D4 jsr IncreaseScore ; $D440 0001C19D: 20 31 D1 jsr UpdateGraphics ; $D131 0001C1A0: A5 23 lda FrameCounter 0001C1A2: 29 03 and #$03 0001C1A4: D0 05 bne + ; $C1AB 0001C1A6: A9 21 lda #$21 ; SFX for points 0001C1A8: 20 77 C4 jsr IssueSound ; $C477 + 0001C1AB: 60 rts 0001C1AC: A2 02 ldx #$02 ; 3 sprites 0001C1AE: 86 0E stx $0E 0001C1B0: A0 C0 ldy #$C0 ; spritepage index = #$C4 0001C1B2: A9 68 lda #$68 ; X position = #$68 0001C1B4: 85 0C sta $0C 0001C1B6: A9 50 lda #$50 ; Y position = #$50 0001C1B8: 85 0D sta $0D 0001C1BA: 20 DD C1 jsr ProcessSprites ; $C1DD 0001C1BD: 60 rts ; ; ; 0001C1BE: A2 04 ldx #$04 0001C1C0: A9 01 lda #$01 ; 2 sprites 0001C1C2: 85 0E sta $0E 0001C1C4: A9 78 lda #$78 0001C1C6: 85 0D sta $0D 0001C1C8: A9 70 lda #$70 0001C1CA: 85 0C sta $0C 0001C1CC: 20 DD C1 jsr ProcessSprites ; $C1DD 0001C1CF: A2 04 ldx #$04 0001C1D1: A9 01 lda #$01 0001C1D3: 85 0E sta $0E 0001C1D5: A9 60 lda #$60 0001C1D7: 85 0D sta $0D 0001C1D9: A9 90 lda #$90 0001C1DB: 85 0C sta $0C ;continues to ProcessSprites ; ; ; Process sprite information (write to spritepage) ; ; $0C = X position ; $0D = Y position ; ; $0E = Number of sprites - 1 ; ; Palette # = 1 ; ; X = index into $B5 ; ProcessSprites - 0001C1DD: B5 B5 lda $B5,x ; Get tile number 0001C1DF: 09 F0 ora #$F0 0001C1E1: 99 05 02 sta CurrentSpriteData+1,y 0001C1E4: A5 0C lda $0C 0001C1E6: 99 07 02 sta CurrentSpriteData+3,y 0001C1E9: A5 0D lda $0D 0001C1EB: 99 04 02 sta CurrentSpriteData+0,y 0001C1EE: A9 01 lda #$01 0001C1F0: 99 06 02 sta CurrentSpriteData+2,y 0001C1F3: C8 iny 0001C1F4: C8 iny 0001C1F5: C8 iny 0001C1F6: C8 iny 0001C1F7: CA dex 0001C1F8: 18 clc 0001C1F9: A5 0C lda $0C ; X position += 8 0001C1FB: 69 08 adc #$08 0001C1FD: 85 0C sta $0C 0001C1FF: C6 0E dec $0E 0001C201: 10 DA bpl - ; $C1DD 0001C203: 60 rts ; Clears all objects except Megaman ClearAllObjectsExceptMegaman 0001C204: A9 F8 lda #$F8 0001C206: A2 1F ldx #$1F - 0001C208: 9D 00 06 sta ObjectPosY,x 0001C20B: CA dex 0001C20C: D0 FA bne - ; $0001C208 0001C20E: 60 rts ; ; A = number of frames to freeze gameplay for ; TimeDelayNoMove 0001C20F: 85 3C sta MiscCounter1 - 0001C211: 20 1B C0 jsr NextFrame ; $C01B 0001C214: C6 3C dec MiscCounter1 0001C216: D0 F9 bne - ; $C211 0001C218: 60 rts MegaManKilled 0001C219: A9 FE lda #$FE 0001C21B: 20 77 C4 jsr IssueSound ; $C477 0001C21E: A9 FF lda #$FF 0001C220: 20 77 C4 jsr IssueSound ; $C477 0001C223: A9 20 lda #$20 0001C225: 20 16 D1 jsr TimeDelayWithAllObjectsHalted 0001C228: A9 31 lda #$31 ; Mega Man exploding 0001C22A: 20 77 C4 jsr IssueSound ; $C477 0001C22D: A9 00 lda #$00 0001C22F: 85 59 sta $59 0001C231: A9 7D lda #$7D 0001C233: 85 5A sta $5A 0001C235: 20 2A C3 jsr AtomicExplodeActor 0001C238: A9 00 lda #$00 0001C23A: 85 45 sta NumIssuedSounds 0001C23C: A9 F8 lda #$F8 ; Hide Megaman 0001C23E: 8D 00 06 sta ObjectPosY+0 ; $0600 0001C241: A9 C0 lda #$C0 0001C243: 85 3C sta MiscCounter1 - 0001C245: 20 17 C3 jsr TimeDelayC317 0001C248: D0 FB bne - ; $0001C245 0001C24A: 20 95 D4 jsr DisableNMI&PPU ; $D495 0001C24D: A9 00 lda #$00 0001C24F: 85 47 sta GutsmanStompCounter 0001C251: 85 B4 sta UseTempScrollX 0001C253: 85 55 sta MegamanBlinkState 0001C255: 85 94 sta MegamanWalkTimer 0001C257: 85 95 sta MegamanStallTimer 0001C259: C6 A6 dec ExtraLives 0001C25B: A5 A6 lda ExtraLives ; Branch if no lives left 0001C25D: 30 72 bmi +++ ; $C2D1 0001C25F: 20 5B C7 jsr WriteChr ; $C75B 0001C262: A9 00 lda #$00 0001C264: 85 AB sta LastRestartPointType 0001C266: 85 59 sta $59 0001C268: AD 60 04 lda ObjectPosScreen+0 ; $0460 0001C26B: A6 31 ldx CurrentStage 0001C26D: DD D4 C2 cmp StageCheckPointA,x 0001C270: 90 35 bcc ++ ; $C2A7 0001C272: A0 0C ldy #$0C 0001C274: DD E0 C2 cmp StageCheckPointB,x 0001C277: 90 02 bcc + ; $C27B 0001C279: A0 18 ldy #$18 + 0001C27B: 98 tya 0001C27C: 85 AB sta LastRestartPointType 0001C27E: 18 clc 0001C27F: 65 31 adc CurrentStage 0001C281: AA tax 0001C282: BD EB C2 lda FirstScreenScreenTable,x 0001C285: 8D 60 04 sta ObjectPosScreen+0 ; $0460 0001C288: 20 58 C6 jsr SetupEnemyGraphicsPointer - 0001C28B: 20 C4 C6 jsr LoadEnemyGraphics 0001C28E: 20 AF D5 jsr DoRawPPUtransfer 0001C291: A5 59 lda $59 0001C293: C9 28 cmp #$28 0001C295: D0 F4 bne - ; $C28B 0001C297: 20 C4 C6 jsr LoadEnemyGraphics 0001C29A: A9 2C lda #$2C 0001C29C: 8D E1 03 sta SpritePalettes + $1 0001C29F: A9 11 lda #$11 0001C2A1: 8D E2 03 sta SpritePalettes + $2 0001C2A4: 20 0A D6 jsr UpdatePalettes ; $D60A ++ 0001C2A7: A9 00 lda #$00 0001C2A9: 85 19 sta JoyD1 0001C2AB: A2 FF ldx #$FF 0001C2AD: 9A txs 0001C2AE: A9 05 lda #$05 0001C2B0: 85 42 sta CurrentBank 0001C2B2: 8D 05 C0 sta $C005 0001C2B5: A5 AB lda LastRestartPointType 0001C2B7: C9 0C cmp #$0C 0001C2B9: B0 03 bcs + ; $C2BE - 0001C2BB: 4C 7E 90 jmp StageBegin + 0001C2BE: A5 31 lda CurrentStage 0001C2C0: C9 07 cmp #$07 0001C2C2: F0 04 beq + ; $0001C2C8 0001C2C4: C9 09 cmp #$09 0001C2C6: D0 06 bne ++ ; $0001C2CE + 0001C2C8: A5 AB lda LastRestartPointType 0001C2CA: C9 0D cmp #$0D 0001C2CC: B0 ED bcs - ; $0001C2BB ++ 0001C2CE: 4C 81 90 jmp StageBeginFromDeath ;Game over +++ 0001C2D1: 4C 38 90 jmp GameOver ; Table that says what screen# Megaman's current screen# must be above or ; equal to in order for him to restart from it... ; Cutman #0 ; Iceman #1 ; Bombman #2 ; Fireman #3 ; Elecman #4 ; Gutsman #5 StageCheckPointA ;at C2D4 .byte $0A,$0A,$0E,$08,$07,$0A .byte $22,$24,$2F,$1D,$1D,$1D StageCheckPointB .byte $14,$14,$14,$10,$14,$0F .byte $27,$29,$2F,$21,$1C FirstScreenScreenTable ;at C2EB ; Initial screen start? .byte $00,$00,$00,$00,$00,$00 .byte $18,$18,$18,$14,$18,$1E ;Stored into ObjectPosScreen+0 or CurrentBeginScreen ; Restart point A .byte $0A,$0A,$0E,$08,$07,$0A .byte $22,$24,$2E,$1D,$1D,$1D ; Restart point B .byte $14,$14,$14,$10,$14,$0F .byte $26,$28,$2E,$21,$20 C30E_table: .byte $FB,$05,$00 ;X increment of some kind C311_table: .byte $FF,$00,$00 ;screen increment of some kind C314_table: .byte $F8,$F4,$06 ;Y increment of some kind TimeDelayC317 0001C317: A5 lda RefObjectNumber 0001C319: D0 03 bne + ; $C31E 0001C31B: 20 8C DB jsr RunBossAI + 0001C31E: 20 EA 98 jsr RunEnemyAI ; $98EA 0001C321: 20 31 D1 jsr UpdateGraphics ; $D131 0001C324: 20 1B C0 jsr NextFrame ; $C01B 0001C327: C6 3C dec MiscCounter1 0001C329: 60 rts AtomicExplodeActor: ;Ah, explosions probably! 0001C32A: A9 0C lda #$0C ;How many atoms to create? 0001C32C: 85 3C sta MiscCounter1 - 0001C32E: A5 3C lda MiscCounter1 0001C330: 29 03 and #$03 0001C332: D0 43 bne + ; $C377 0001C334: A5 59 lda $59 0001C336: 85 2F sta RefObjectNumber 0001C338: A2 02 ldx #$02 0001C33A: 20 76 C5 jsr FindFreeObject ; $C576 0001C33D: B0 38 bcs + ; $C377 0001C33F: 20 7B F6 jsr InitActor 0001C342: A5 5A lda $5A 0001C344: 9D 00 04 sta ObjectSpriteNum,x 0001C347: A9 08 lda #$08 0001C349: 9D 20 04 sta ObjectFlags,x 0001C34C: A9 10 lda #$10 0001C34E: 9D 40 04 sta ObjectUnknown440,x 0001C351: A5 3C lda MiscCounter1 0001C353: 4A lsr a 0001C354: 4A lsr a 0001C355: A8 tay 0001C356: BD 80 04 lda ObjectPosX,x 0001C359: 79 0D C3 adc C30E_table-1,y 0001C35C: 9D 80 04 sta ObjectPosX,x 0001C35F: BD 60 04 lda ObjectPosScreen,x 0001C362: 79 10 C3 adc C311_table-1,y 0001C365: 9D 60 04 sta ObjectPosScreen,x 0001C368: 18 clc 0001C369: BD 00 06 lda ObjectPosY,x 0001C36C: 79 13 C3 adc C314_table-1,y 0001C36F: 9D 00 06 sta ObjectPosY,x 0001C372: A0 08 ldy #$08 0001C374: 20 33 F5 jsr InitObjectDefaultSpeed + 0001C377: 20 17 C3 jsr TimeDelayC317 0001C37A: D0 B2 bne - ; $C32E 0001C37C: A9 0B lda #$0B 0001C37E: 85 0C sta $0C 0001C380: A5 5A lda $5A 0001C382: 85 0D sta $0D 0001C384: A9 00 lda #$00 0001C386: 85 0E sta $0E - 0001C388: A4 59 ldy $59 0001C38A: A2 02 ldx #$02 0001C38C: 20 76 C5 jsr FindFreeObject ; FindFreeObject 0001C38F: B0 05 bcs $0001C396 0001C391: 20 41 F8 jsr CreateExplosionObject 0001C394: 10 F2 bpl - 0001C396: A9 12 lda #$12 ; Explosion 0001C398: 20 77 C4 jsr IssueSound ; $C477 0001C39B: 60 rts ; ; ; SwitchBankStage ;doesn't modify P,A. Modifies X. 0001C39C: 08 php 0001C39D: 48 pha 0001C39E: 8A txa 0001C39F: 48 pha 0001C3A0: A5 31 lda CurrentStage 0001C3A2: C9 06 cmp #$06 ; bank=(stage%6) 0001C3A4: 90 02 bcc + ; $C3A8 0001C3A6: E9 06 sbc #$06 + 0001C3A8: AA tax 0001C3A9: 85 42 sta CurrentBank 0001C3AB: 9D 00 C0 sta $C000,x 0001C3AE: 68 pla 0001C3AF: AA tax 0001C3B0: 68 pla 0001C3B1: 28 plp 0001C3B2: 60 rts SwitchBank05 0001C3B3: 08 php 0001C3B4: 48 pha 0001C3B5: A9 05 lda #$05 0001C3B7: 85 42 sta CurrentBank 0001C3B9: 8D 05 C0 sta $C005 0001C3BC: 68 pla 0001C3BD: 28 plp 0001C3BE: 60 rts ; Handle weapon select screen? InvokeWeaponSelectDialog 0001C3BF: A9 06 lda #$06 0001C3C1: 85 42 sta CurrentBank 0001C3C3: 8D 06 C0 sta $C006 0001C3C6: A5 AC lda FightingBossNum 0001C3C8: C9 0A cmp #$0A 0001C3CA: F0 0E beq ++ ; $C3DA 0001C3CC: A5 31 lda CurrentStage 0001C3CE: C9 09 cmp #$09 0001C3D0: D0 04 bne + ; $C3D6 0001C3D2: C5 AC cmp FightingBossNum 0001C3D4: F0 04 beq ++ ; $C3DA + 0001C3D6: C9 06 cmp #$06 0001C3D8: D0 06 bne + ; $C3E0 ++ 0001C3DA: A5 3E lda BossCurrentStrategy 0001C3DC: F0 02 beq + ; $C3E0 0001C3DE: E6 1B inc ScrollPosScreen + 0001C3E0: 4C F3 BF jmp DoWeaponSelectDialog ; Arrived from bank 6 Lbl_c3e3: 0001C3E3: A5 AC lda FightingBossNum 0001C3E5: C9 0A cmp #$0A 0001C3E7: F0 0E beq ++ ; $C3F7 0001C3E9: A5 31 lda CurrentStage 0001C3EB: C9 09 cmp #$09 0001C3ED: D0 04 bne + ; $C3F3 0001C3EF: C5 AC cmp FightingBossNum 0001C3F1: F0 04 beq ++ ; $C3F7 + 0001C3F3: C9 06 cmp #$06 0001C3F5: D0 06 bne +++ ; $C3FD ++ 0001C3F7: A5 3E lda BossCurrentStrategy 0001C3F9: F0 02 beq +++ ; $C3FD 0001C3FB: C6 1A dec ScrollPosX +++ 0001C3FD: 4C B3 C3 jmp SwitchBank05 ; $C3B3 ; Arrived from bank 6 Lbl_c400 0001C400: AA tax 0001C401: 85 42 sta CurrentBank 0001C403: 9D 00 C0 sta $C000,x 0001C406: A2 00 ldx #$00 - 0001C408: B1 06 lda (CurrentRoomPointer),y 0001C40A: 9D 82 03 sta RawPPUtransferBuf,x 0001C40D: C8 iny 0001C40E: E8 inx 0001C40F: E0 10 cpx #$10 0001C411: D0 F5 bne - ; $C408 SwitchBank6_a 0001C413: A9 06 lda #$06 0001C415: 85 42 sta CurrentBank 0001C417: 8D 06 C0 sta $C006 0001C41A: 60 rts DrawBlockFromActiveLevelMap_Bank06callback 0001C41B: 20 E8 CD jsr DrawBlockFromActiveLevelMap SwitchBank6_b 0001C41E: A9 06 lda #$06 0001C420: 85 42 sta CurrentBank 0001C422: 8D 06 C0 sta $C006 0001C425: 60 rts InitEndGameScene 0001C426: A9 06 lda #$06 0001C428: 85 42 sta CurrentBank 0001C42A: 8D 06 C0 sta $C006 0001C42D: 4C F0 BF jmp Lbl_bff0 TeleportToStage_Bank06callback 0001C430: 20 E0 C4 jsr TeleportToStage ; $C4E0 0001C433: 4C 56 C4 jmp SwitchBank06_c Lbl_c436 0001C436: 4C 7B F6 jmp InitActor Lbl_c439 0001C439: 20 B3 C3 jsr SwitchBank05 ; $C3B3 0001C43C: 20 6D 9E jsr ObjectUpdateMovementLeft 0001C43F: 20 8F 98 jsr AutoCenterScreen Lbl_c442 0001C442: 20 31 D1 jsr UpdateGraphics ; $D131 0001C445: 20 1B C0 jsr NextFrame ; $C01B 0001C448: E6 BD inc $BD 0001C44A: A5 BD lda $BD 0001C44C: C9 3E cmp #$3E 0001C44E: D0 06 bne SwitchBank06_c 0001C450: E6 BE inc $BE 0001C452: A9 00 lda #$00 0001C454: 85 BD sta $BD SwitchBank06_c 0001C456: A9 06 lda #$06 0001C458: 85 42 sta CurrentBank 0001C45A: 8D 06 C0 sta $C006 0001C45D: 60 rts Lbl_c45e ; reset the current stage number? 0001C45E: A9 00 lda #$00 0001C460: 85 31 sta CurrentStage 0001C462: 4C 0C C1 jmp $C10C ; inc $6A0 for every object except Megaman LifeCycleTick_forEnemies 0001C465: A2 01 ldx #$01 - 0001C467: BD 00 06 lda ObjectPosY,x 0001C46A: C9 F8 cmp #$F8 0001C46C: F0 03 beq + ; $C471 0001C46E: FE A0 06 inc ObjectLifeCycleCounter,x + 0001C471: E8 inx 0001C472: E0 20 cpx #$20 0001C474: D0 F1 bne - ; $C467 0001C476: 60 rts ; ; Adds the sound with sound ID = A to the list of sounds to be issued ; IssueSound 0001C477: A6 45 ldx NumIssuedSounds ; Max 16 sounds in a frame 0001C479: E0 10 cpx #$10 0001C47B: F0 05 beq + ; $0001C482 0001C47D: 9D 80 05 sta IssuedSoundsList,x 0001C480: E6 45 inc NumIssuedSounds + 0001C482: 60 rts InitStagePaletteAndActives 0001C483: 20 9C C3 jsr SwitchBankStage ; $C39C 0001C486: A5 31 lda CurrentStage 0001C488: C9 06 cmp #$06 0001C48A: 90 0B bcc + ; $C497 0001C48C: A9 D0 lda #(RoomSpritePalettes2.lo) 0001C48E: 85 35 sta $35 0001C490: A9 8C lda #(RoomSpritePalettes2.hi) 0001C492: 85 36 sta $36 0001C494: 4C 9F C4 jmp ++ ; $C49F + 0001C497: A9 A0 lda #(RoomSpritePalettes1.lo) 0001C499: 85 35 sta $35 0001C49B: A9 8C lda #(RoomSpritePalettes1.hi) 0001C49D: 85 36 sta $36 ++ ; Write both BG and sprite palette 0001C49F: A9 20 lda #$20 0001C4A1: 20 47 D6 jsr WritePalette ; $D647 ; ; Copies palette into RAM for continous updates? (only affects BG palette) ; 0001C4A4: A0 2F ldy #$2F - 0001C4A6: B1 35 lda ($35),y 0001C4A8: 99 D0 03 sta BGPalettes,y 0001C4AB: 88 dey 0001C4AC: 10 F8 bpl - ; $C4A6 0001C4AE: A5 31 lda CurrentStage 0001C4B0: C9 06 cmp #$06 0001C4B2: 90 0A bcc ++ ; $C4BE ; 8E9F (8EA0-1) 0001C4B4: A9 9F lda #(RoomActives2-1).lo 0001C4B6: 85 04 sta $04 0001C4B8: A9 8E lda #(RoomActives2-1).hi 0001C4BA: 85 05 sta $05 0001C4BC: D0 08 bne + ; $C4C6 ++ ; 8DFF (8E00-1) 0001C4BE: A9 FF lda #(RoomActives1-1).lo 0001C4C0: 85 04 sta $04 0001C4C2: A9 8D lda #(RoomActives1-1).hi 0001C4C4: 85 05 sta $05 + 0001C4C6: A0 01 ldy #$01 0001C4C8: B1 04 lda ($04),y 0001C4CA: 0A asl a 0001C4CB: 8D 20 07 sta RoomActiveTable ; tmp = count*2 0001C4CE: 0A asl a 0001C4CF: 18 clc 0001C4D0: 6D 20 07 adc RoomActiveTable ; A = tmp + count*4 (count*6) 0001C4D3: A8 tay 0001C4D4: C8 iny - 0001C4D5: B1 04 lda ($04),y 0001C4D7: 99 1F 07 sta RoomActiveTable-1,y 0001C4DA: 88 dey 0001C4DB: D0 F8 bne - ; $C4D5 0001C4DD: 4C B3 C3 jmp SwitchBank05 ; $C3B3 ; ; This routine handles the "teleportation" of Megaman, i.e. when he sweeps ; down to the stage from the sky after the "READY" message ; TeleportToStage 0001C4E0: 18 clc 0001C4E1: A5 31 lda CurrentStage 0001C4E3: 65 AB adc LastRestartPointType 0001C4E5: AA tax ; Let megaman transform 0001C4E6: A9 14 lda #$14 0001C4E8: 8D 00 04 sta ObjectSpriteNum+0 ; $0400 0001C4EB: A9 41 lda #$41 0001C4ED: 8D 20 04 sta ObjectFlags+0 ; Move Megaman down 16 pixels/frame until his Y position equals starting spot 0001C4F0: BD 1A C5 lda TeleportYcoord,x 0001C4F3: 85 59 sta $59 - 0001C4F5: A2 00 ldx #$00 0001C4F7: 8E 40 04 stx ObjectUnknown440+0 0001C4FA: 18 clc 0001C4FB: AD 00 06 lda ObjectPosY+0 ; $0600 0001C4FE: 69 10 adc #$10 0001C500: 8D 00 06 sta ObjectPosY+0 ; ObjectPosY+0 0001C503: 20 31 D1 jsr UpdateGraphics ; $D131 0001C506: 20 1B C0 jsr NextFrame ; $C01B 0001C509: AD 00 06 lda ObjectPosY+0 ; ObjectPosY+0 0001C50C: A6 31 ldx CurrentStage 0001C50E: C5 59 cmp $59 ; Until the Y coord matches. 0001C510: D0 E3 bne - ; $C4F5 0001C512: A9 00 lda #$00 0001C514: 8D 80 06 sta ObjectYSpeed+0 0001C517: 4C B3 C3 jmp SwitchBank05 ; $C3B3 ;At C51A TeleportYcoord ; Start of stage .byte $94,$B4,$B4,$B4,$C4,$B4 .byte $B4,$74,$B4,$94,$84,$64 ; Restart point A .byte $94,$C4,$B4,$94,$94,$54 .byte $24,$64,$B4,$B4,$B4,$B4 ; Restart point B .byte $94,$94,$94,$94,$94,$94 .byte $B4,$94,$B4,$B4,$B4,$B4 C53D_routine 0001C53D: A9 06 lda #$06 0001C53F: 85 sta CurrentBank 0001C541: 8D 06 C0 sta $C006 0001C544: BD 00 04 lda ObjectSpriteNum,x 0001C547: A0 06 ldy #$06 - 0001C549: D9 44 86 cmp Lbl_8644,y 0001C54C: F0 08 beq + ; $C556 0001C54E: 88 dey 0001C54F: 10 F8 bpl - ; $C549 0001C551: A0 00 ldy #$00 0001C553: 4C 64 C5 jmp ++ ; $C564 + 0001C556: B9 4A 86 lda Lbl_864a,y 0001C559: A8 tay 0001C55A: 4C 64 C5 jmp ++ ; $C564 0001C55D: A9 06 lda #$06 0001C55F: 85 42 sta CurrentBank 0001C561: 8D 06 C0 sta $C006 ++ 0001C564: B9 3A 86 lda Lbl_863a,y 0001C567: 48 pha 0001C568: 29 F0 and #$F0 0001C56A: 9D E0 04 sta ObjectXSpeedFraction,x 0001C56D: 68 pla 0001C56E: 29 0F and #$0F 0001C570: 9D C0 04 sta ObjectXSpeed,x 0001C573: 4C B3 C3 jmp SwitchBank05 ; $C3B3 ; This routine clears carry if #$F8 is found between $600+X and $600+TotalObjects ; and sets it otherwise ; C = 0 if found, 1 if not FindFreeObject 0001C576: A9 F8 lda #$F8 - 0001C578: DD 00 06 cmp ObjectPosY,x 0001C57B: F0 07 beq + ; $C584 0001C57D: E8 inx 0001C57E: E4 54 cpx TotalObjects 0001C580: D0 F6 bne - ; $C578 0001C582: 38 sec 0001C583: 60 rts + 0001C584: 18 clc 0001C585: 60 rts FindLastObjectOfType - 0001C586: DD 00 04 cmp ObjectSpriteNum,x 0001C589: F0 07 beq + ; $C592 -- 0001C58B: E8 inx 0001C58C: E4 54 cpx TotalObjects 0001C58E: D0 F6 bne - 0001C590: 38 sec 0001C591: 60 rts + 0001C592: A9 F8 lda #$F8 0001C594: DD 00 06 cmp ObjectPosY,x 0001C597: 08 php 0001C598: BD 00 04 lda ObjectSpriteNum,x 0001C59B: 28 plp 0001C59C: F0 ED beq -- ; $C58B 0001C59E: 18 clc 0001C59F: 60 rts ; Random function ; A = max value RandomFunc ;In Megaman2, C84E (and it's much different) 0001C5A0: 85 40 sta $40 0001C5A2: A5 46 lda RandomSeed 0001C5A4: 38 sec - 0001C5A5: E5 40 sbc $40 0001C5A7: B0 FC bcs - ; $C5A5 0001C5A9: 65 40 adc $40 0001C5AB: 60 rts EnemyCalculateJumpCurveToHitMegaman ; It does some math (input: A,X,Y); output: $04,$05 ; Uses $4A,$4B,$4C,$4D as temps 0001C5AC: 85 4D sta $4D 0001C5AE: 86 4B stx $4B 0001C5B0: 84 4C sty $4C 0001C5B2: A9 00 lda #$00 0001C5B4: 85 4A sta $4A 0001C5B6: A0 10 ldy #$10 - 0001C5B8: 06 4C asl $4C 0001C5BA: 26 4B rol $4B 0001C5BC: 26 4A rol $4A 0001C5BE: A5 4A lda $4A 0001C5C0: 38 sec 0001C5C1: E5 4D sbc $4D 0001C5C3: 90 04 bcc + ; $C5C9 0001C5C5: 85 4A sta $4A 0001C5C7: E6 4C inc $4C + 0001C5C9: 88 dey 0001C5CA: D0 EC bne - ; $C5B8 0001C5CC: A5 4B lda $4B 0001C5CE: 85 05 sta $05 0001C5D0: A5 4C lda $4C 0001C5D2: 85 04 sta $04 0001C5D4: 60 rts 0001C5D5: A5 05 lda $05 0001C5D7: 85 4B sta $4B 0001C5D9: A5 04 lda $04 0001C5DB: 85 4C sta $4C 0001C5DD: A5 07 lda CurrentRoomPointer+1 0001C5DF: 85 4E sta $4E 0001C5E1: A5 06 lda CurrentRoomPointer 0001C5E3: 85 11 sta $11 0001C5E5: A9 00 lda #$00 0001C5E7: 85 4A sta $4A 0001C5E9: 85 4D sta $4D 0001C5EB: A0 10 ldy #$10 - 0001C5ED: 06 4D asl $4D 0001C5EF: 26 4C rol $4C 0001C5F1: 26 4B rol $4B 0001C5F3: 26 4A rol $4A 0001C5F5: 38 sec 0001C5F6: A5 4B lda $4B 0001C5F8: E5 4F sbc $4F 0001C5FA: AA tax 0001C5FB: A5 4A lda $4A 0001C5FD: E5 4E sbc $4E 0001C5FF: 90 06 bcc + ; $C607 0001C601: 86 4B stx $4B 0001C603: 85 4A sta $4A 0001C605: E6 4D inc $4D + 0001C607: 88 dey 0001C608: D0 E3 bne - ; $C5ED 0001C60A: A5 4D lda $4D 0001C60C: 85 08 sta CurrentRoomPointer+2 0001C60E: A5 4C lda $4C 0001C610: 85 09 sta CurrentRoomPointer+3 0001C612: 60 rts RoomLayoutLoadRoomNum 0001C613: 20 9C C3 jsr SwitchBankStage ; $C39C 0001C616: C0 00 cpy #$00 0001C618: 30 06 bmi + ; $C620 0001C61A: B9 71 8C lda RoomLayoutTable+1,y 0001C61D: 4C B3 C3 jmp SwitchBank05 ; $C3B3 + 0001C620: A9 00 lda #$00 0001C622: 4C B3 C3 jmp SwitchBank05 ; $C3B3 LoadActiveByIndexAndSetBlockingness ; Input: A = index into the active table. 0001C625: 20 9C C3 jsr SwitchBankStage ; $C39C 0001C628: AA tax 0001C629: A5 0C lda $0C 0001C62B: 9D 21 07 sta RoomActiveTable+1,x ;type 0001C62E: BD 23 07 lda RoomActiveTable+3,x ;x1 0001C631: 09 08 ora #$08 0001C633: 85 0C sta $0C 0001C635: BD 24 07 lda RoomActiveTable+4,x ;y1 0001C638: 09 0B ora #$0B 0001C63A: 85 0D sta $0D 0001C63C: 4C B3 C3 jmp SwitchBank05 ; $C3B3 0001C63F: 20 9C C3 jsr SwitchBankStage ; $C39C 0001C642: A4 0C ldy $0C 0001C644: 99 24 07 sta RoomActiveTable+4,y 0001C647: 4C B3 C3 jmp SwitchBank05 ; $C3B3 0001C64A: 20 9C C3 jsr SwitchBankStage ; $C39C 0001C64D: A4 0C ldy $0C 0001C64F: B9 26 07 lda RoomActiveTable+6,y 0001C652: 99 24 07 sta RoomActiveTable+4,y 0001C655: 4C B3 C3 jmp SwitchBank05 ; $C3B3 SetupEnemyGraphicsPointer 0001C658: 20 9C C3 jsr SwitchBankStage ; $C39C 0001C65B: AE 60 04 ldx ObjectPosScreen+0 ; $0460 0001C65E: BD 40 8D lda RoomMonsterIndex,x 0001C661: 85 7A sta CurrentRoomMonsterGraphicsIndex ; Only read at C6E8� 0001C663: 4C B3 C3 jmp SwitchBank05 ; $C3B3 SpawnObject_TypeIsFF ; ; Input: ; $00 = posx, $01 = posy, $05 = screen number ; ; Objects of type FF are actually calls to remap pattern tables of PPU. ; The Y position is an index into ObjectFF_defs, which tells which tiles ; will be redefined. ; 0001C666: A5 42 lda CurrentBank 0001C668: 48 pha 0001C669: A5 92 lda AutoSpawnObjectFFcounter 0001C66B: D0 08 bne + ; $C675 0001C66D: A6 01 ldx $01 0001C66F: 86 93 stx $93 0001C671: A9 10 lda #$10 0001C673: 85 92 sta AutoSpawnObjectFFcounter + 0001C675: A5 04 lda $04 0001C677: 48 pha 0001C678: A5 05 lda $05 0001C67A: 48 pha 0001C67B: C6 92 dec AutoSpawnObjectFFcounter 0001C67D: A6 93 ldx $93 0001C67F: BD B0 C6 lda ObjectFF_defs+0,x 0001C682: 8D 80 03 sta RawPPUtransferAddress+0 0001C685: BD B1 C6 lda ObjectFF_defs+1,x 0001C688: 20 AE C7 jsr SwitchBankTile ; $C7AE 0001C68B: A5 92 lda AutoSpawnObjectFFcounter 0001C68D: 0A asl a 0001C68E: 0A asl a 0001C68F: 0A asl a 0001C690: 0A asl a 0001C691: 85 04 sta $04 0001C693: 8D 81 03 sta RawPPUtransferAddress+1 0001C696: A0 0F ldy #$0F - 0001C698: B1 04 lda ($04),y 0001C69A: 99 82 03 sta RawPPUtransferBuf,y 0001C69D: 88 dey 0001C69E: 10 F8 bpl - ; $C698 0001C6A0: A9 10 lda #$10 0001C6A2: 85 5E sta RawPPUtransferSize 0001C6A4: 68 pla 0001C6A5: 85 05 sta $05 0001C6A7: 68 pla 0001C6A8: 85 04 sta $04 0001C6AA: 68 pla 0001C6AB: AA tax 0001C6AC: 9D 00 C0 sta $C000,x ; switch back to the original bank 0001C6AF: 60 rts ObjectFF_defs: ;at C6B0 ; The first byte is the sprite pattern table index to change, ; the second byte is the sprite address (as used by SwitchBankTile). .byte $08,$6E ; block $1B at page 2 (00- used in Iceman water-end - loads enemy [1] 6E) (Blader etc) .byte $08,$A2 ; block $28 at page 2 (02- used in Iceman water-start-loads enemy [1] A2) (HeadLosingRobot) .byte $09,$82 ; block $20 at page 2 (04- used in Gutsman screen 6 - loads enemy [2] 82) (Axe-throwers) .byte $0A,$86 ; block $21 at page 2 (06- used in Gutsman screen 6 - loads enemy [3] 86) (Axe-throwers) .byte $09,$AE ; block $2B at page 2 (08- used in Gutsman screen 5 - loads enemy [2] AE) (Lift data) .byte $0A,$B2 ; block $2C at page 2 (0A- used in Gutsman screen 5 - loads enemy [3] B2) (Lift data) .byte $0B,$62 ; block $18 at page 2 (0C- used in Wily3 - loads enemy [4] 62) .byte $00,$FA ; block $3E at page 2 used in Ending. Elvis hair. .byte $01,$CE ; block $33 at page 2 used in Ending. Elvis running. .byte $02,$D2 ; block $34 at page 2 used in Ending. Elvis running. LoadEnemyGraphics 0001C6C4: A5 59 lda $59 0001C6C6: C9 29 cmp #$29 0001C6C8: D0 01 bne + 0001C6CA: 60 rts + 0001C6CB: E6 59 inc $59 0001C6CD: 20 9C C3 jsr SwitchBankStage ; $C39C 0001C6D0: 4A lsr a 0001C6D1: 6E 81 03 ror RawPPUtransferAddress+1 0001C6D4: 4A lsr a 0001C6D5: 6E 81 03 ror RawPPUtransferAddress+1 0001C6D8: 4A lsr a 0001C6D9: 6E 81 03 ror RawPPUtransferAddress+1 0001C6DC: 48 pha 0001C6DD: 18 clc 0001C6DE: 69 08 adc #$08 0001C6E0: 8D 80 03 sta RawPPUtransferAddress+0 0001C6E3: 68 pla 0001C6E4: C9 05 cmp #$05 0001C6E6: 08 php 0001C6E7: 18 clc 0001C6E8: 65 7A adc CurrentRoomMonsterGraphicsIndex ;Only written to in C661, loaded from RoomMonsterIndex. 0001C6EA: AA tax 0001C6EB: 28 plp 0001C6EC: F0 21 beq + ; $C70F 0001C6EE: BD 80 8D lda RoomMonsterGraphics,x ; Load bank. 0001C6F1: 20 AE C7 jsr SwitchBankTile ; $C7AE 0001C6F4: AD 81 03 lda RawPPUtransferAddress+1 0001C6F7: 29 E0 and #$E0 0001C6F9: 8D 81 03 sta RawPPUtransferAddress+1 0001C6FC: 85 04 sta $04 0001C6FE: A0 1F ldy #$1F - 0001C700: B1 04 lda ($04),y 0001C702: 99 82 03 sta RawPPUtransferBuf,y 0001C705: 88 dey 0001C706: 10 F8 bpl - ; $C700 0001C708: A9 20 lda #$20 0001C70A: 85 5E sta RawPPUtransferSize 0001C70C: 4C B3 C3 jmp SwitchBank05 ; $C3B3 + 0001C70F: A0 00 ldy #$00 ; Copies 6 bytes of palette. ; Y = 0,1,2,4,5,6 (skips 3) - 0001C711: BD 80 8D lda RoomMonsterGraphics,x 0001C714: 99 E9 03 sta SpritePalettes + $9,y 0001C717: E8 inx 0001C718: C8 iny 0001C719: C0 07 cpy #$07 0001C71B: F0 07 beq + ; $C724 0001C71D: C0 03 cpy #$03 0001C71F: D0 F0 bne - ; $C711 0001C721: C8 iny 0001C722: D0 ED bne - ; $C711 + 0001C724: 20 2A C7 jsr PaletteSetupForSprites 0001C727: 4C B3 C3 jmp SwitchBank05 ; $C3B3 PaletteSetupForSprites 0001C72A: A9 03 lda #(SpritePalettes).hi 0001C72C: 85 39 sta $39 0001C72E: 85 3B sta $3B 0001C730: A9 E0 lda #(SpritePalettes).lo 0001C732: 85 38 sta $38 0001C734: 85 3A sta $3A 0001C736: A9 18 lda #$18 ; Setup 1 sprite palette - 0001C738: 85 34 sta WritePaletteParam 0001C73A: A9 01 lda #$01 0001C73C: 85 37 sta PaletteUpdateDelay 0001C73E: 60 rts PaletteSetupForBG 0001C73F: A9 03 lda #(BGPalettes).hi 0001C741: 85 39 sta $39 0001C743: 85 3B sta $3B 0001C745: A9 D0 lda #(BGPalettes).lo 0001C747: 85 38 sta $38 0001C749: 85 3A sta $3A 0001C74B: A9 10 lda #$10 ; Setup 1 BG palette 0001C74D: D0 E9 bne - ; unconditional jump to C738 PaletteSetupForBGwith3F0 0001C74F: 20 3F C7 jsr PaletteSetupForBG 0001C752: A9 03 lda #(UnknownPalettes).hi 0001C754: 85 39 sta $39 0001C756: A9 F0 lda #(UnknownPalettes).lo 0001C758: 85 38 sta $38 0001C75A: 60 rts ; This routine writes the sprite chr ; It is initialized in the beginning of each stage / forcescrolling WriteChr 0001C75B: 20 9C C3 jsr SwitchBankStage ; $C39C 0001C75E: A5 31 lda CurrentStage 0001C760: C9 06 cmp #$06 0001C762: 90 05 bcc + ; $C769 0001C764: AD 20 8D lda RoomTileTable2 0001C767: D0 03 bne ++ ; $C76C + 0001C769: AD 00 8D lda RoomTileTable1 ++ 0001C76C: 85 0C sta $0C ;Number of tiles in the tile table. 0001C76E: A9 00 lda #$00 0001C770: 8D 06 20 sta $2006 0001C773: 8D 06 20 sta $2006 0001C776: 85 0D sta $0D --- 0001C778: 20 9C C3 jsr SwitchBankStage ; $C39C 0001C77B: A4 0D ldy $0D 0001C77D: A5 31 lda CurrentStage 0001C77F: C9 06 cmp #$06 0001C781: 90 08 bcc ++ ; $C78B 0001C783: B9 21 8D lda RoomTileTable2+1,y ; tile bank & index 0001C786: BE 22 8D ldx RoomTileTable2+2,y ; number of 256-bytes to copy 0001C789: D0 06 bne + ; $C791 ++ 0001C78B: BE 02 8D ldx RoomTileTable1+2,y ; number of 256-bytes to copy 0001C78E: B9 01 8D lda RoomTileTable1+1,y ; tile bank & index + 0001C791: 20 AE C7 jsr SwitchBankTile ; $C7AE -- 0001C794: A0 00 ldy #$00 ; Copy 256 bytes to VRAM - 0001C796: B1 04 lda ($04),y 0001C798: 8D 07 20 sta $2007 0001C79B: C8 iny 0001C79C: D0 F8 bne - ; $C796 0001C79E: E6 05 inc $05 0001C7A0: CA dex 0001C7A1: D0 F1 bne -- ;more 256-bytes? 0001C7A3: E6 0D inc $0D 0001C7A5: E6 0D inc $0D 0001C7A7: C6 0C dec $0C 0001C7A9: D0 CD bne --- ; more tile setups? 0001C7AB: 4C B3 C3 jmp SwitchBank05 ; $C3B3 ; SwitchBankTile. ; Input: ; A: ; low 2 bits = bank number ; high 6 bits = block offset (16..63) ; Output: ; Bank switched ; $04,$05 = pointer to the blockdata (0x8000 + (blocknumber)*0x100, 0x9000..0xBF00) SwitchBankTile 0001C7AE: 48 pha 0001C7AF: 29 FC and #$FC 0001C7B1: 4A lsr a 0001C7B2: 4A lsr a 0001C7B3: 09 80 ora #$80 ;address of bank begin 0001C7B5: 85 05 sta $05 0001C7B7: A9 00 lda #$00 0001C7B9: 85 04 sta $04 0001C7BB: 68 pla 0001C7BC: 29 03 and #$03 0001C7BE: A8 tay 0001C7BF: 85 42 sta CurrentBank 0001C7C1: 99 00 C0 sta $C000,y 0001C7C4: 60 rts 0001C7C5: A9 4C lda #$4C 0001C7C7: 85 0C sta $0C 0001C7C9: A9 00 lda #$00 0001C7CB: 85 0D sta $0D 0001C7CD: A9 08 lda #$08 0001C7CF: 85 0E sta $0E - 0001C7D1: A2 02 ldx #$02 0001C7D3: A5 0C lda $0C 0001C7D5: 20 86 C5 jsr FindLastObjectOfType 0001C7D8: B0 03 bcs + ; $C7DD 0001C7DA: 20 FA C7 jsr C7FA_routine + 0001C7DD: E6 0C inc $0C 0001C7DF: C6 0E dec $0E 0001C7E1: D0 EE bne - ; $C7D1 0001C7E3: 60 rts C7E4_routine 0001C7E4: A2 05 ldx #$05 0001C7E6: A9 00 lda #$00 0001C7E8: 85 0D sta $0D - 0001C7EA: BD 00 06 lda ObjectPosY,x 0001C7ED: C9 F8 cmp #$F8 0001C7EF: F0 03 beq + ; $C7F4 0001C7F1: 20 FA C7 jsr C7FA_routine + 0001C7F4: E8 inx 0001C7F5: E0 0A cpx #$0A 0001C7F7: D0 F1 bne - ; $C7EA 0001C7F9: 60 rts C7FA_routine 0001C7FA: BD 20 04 lda ObjectFlags,x ; Flip direction of object (and?...) 0001C7FD: 49 40 eor #$40 0001C7FF: 29 F7 and #$F7 0001C801: 9D 20 04 sta ObjectFlags,x 0001C804: A4 0D ldy $0D 0001C806: B9 24 C8 lda C824_table,y 0001C809: 9D 60 06 sta ObjectYSpeedFraction,x 0001C80C: B9 29 C8 lda C829_table,y 0001C80F: 9D 80 06 sta ObjectYSpeed,x 0001C812: B9 2E C8 lda C82E_table,y 0001C815: 48 pha 0001C816: 29 F0 and #$F0 0001C818: 9D E0 04 sta ObjectXSpeedFraction,x 0001C81B: 68 pla 0001C81C: 29 0F and #$0F 0001C81E: 9D C0 04 sta ObjectXSpeed,x 0001C821: E6 0D inc $0D 0001C823: 60 rts C824_table: ; gives values for ObjectYSpeedFraction .byte $54,$80,$00,$80,$AC C829_table: .byte $04,$02,$00,$BD,$FB C82E_table: ; - gives values for ObjectXSpeed and ObjectXSpeedFraction .byte $82,$54,$05,$54,$82 ; ; A = Type of item in some way... (#$42 = Magnet Beam) ; GotItem ; Bonus items range is #$3C - #$46 0001C833: 38 sec 0001C834: E9 3C sbc #$3C 0001C836: 0A asl a 0001C837: A8 tay 0001C838: A9 F8 lda #$F8 ; Remove the object from the objects list 0001C83A: 9D 00 06 sta ObjectPosY,x ; Lookup jumptable 0001C83D: B9 9E C8 lda GotItemJumpTable,y ; $C89E,Y 0001C840: 85 04 sta $04 0001C842: B9 9F C8 lda GotItemJumpTable+1,y ; $C89F,y 0001C845: 85 05 sta $05 0001C847: 6C 04 00 jmp ($0004) GotBonusPearl 0001C84A: 18 clc 0001C84B: A5 AE lda BonusPearlCount 0001C84D: C9 63 cmp #$63 0001C84F: F0 2C beq PlayBonusPearlSound ; $C87D 0001C851: E6 AE inc BonusPearlCount 0001C853: D0 28 bne PlayBonusPearlSound ; $C87D GotSmallWeaponCapsule 0001C855: A9 82 lda #$82 0001C857: D0 0A bne + ; $C863 GotSmallLifeCapsule 0001C859: A9 02 lda #$02 0001C85B: D0 06 bne + ; $C863 GotLargeWeaponCapsule 0001C85D: A9 8A lda #$8A 0001C85F: D0 02 bne + ; $C863 GotLargeLifeCapsule 0001C861: A9 0A lda #$0A + 0001C863: 85 AD sta CapsuleObtained 0001C865: 60 rts ; If ExtraLives < 99 then Extralives++, play ExtraLife sound GotExtraLife 0001C866: A9 32 lda #$32 0001C868: 18 clc 0001C869: A6 A6 ldx ExtraLives 0001C86B: E0 63 cpx #$63 0001C86D: B0 10 bcs + ; $C87F 0001C86F: E6 A6 inc ExtraLives 0001C871: D0 0C bne + ; $C87F GotMagnetBeam 0001C873: A9 80 lda #$80 ; Obtain magnet beam 0001C875: 05 5D ora WeaponsOwned 0001C877: 85 5D sta WeaponsOwned 0001C879: A9 1C lda #$1C 0001C87B: 85 71 sta $71 PlayBonusPearlSound 0001C87D: A9 1A lda #$1A ; Bonus pearl pickup + 0001C87F: 20 77 C4 jsr IssueSound ; $C477 0001C882: 60 rts ; Set scrolling=up ; Set TeleportEnteredFlag=1 GotTeleportation 0001C883: A9 01 lda #$01 0001C885: 85 26 sta CurrentStripeEndType 0001C887: 85 B0 sta TeleportEnteredFlag 0001C889: D0 F2 bne PlayBonusPearlSound ; $C87D GotLevelEndItem 0001C88B: A9 1A lda #$1A ; Bonus pearl pickup 0001C88D: 20 77 C4 jsr IssueSound ; $C477 0001C890: 4C 5A C0 jmp StageClear ; $C05A ; Set all meters to max and play bonus pearl pickup sound ; Could this be Yashichi (should also give 100,000 points...) GotYashichi 0001C893: A9 1C lda #$1C 0001C895: A2 07 ldx #$07 - 0001C897: 95 6A sta Meters,x 0001C899: CA dex 0001C89A: 10 FB bpl - ; $C897 0001C89C: 30 DF bmi PlayBonusPearlSound ; $C87D GotItemJumpTable .dw GotBonusPearl ; $3C = Bonus Pearl .dw GotSmallWeaponCapsule ; $3D .dw GotSmallLifeCapsule ; $3E .dw GotLargeWeaponCapsule ; $3F .dw GotLargeLifeCapsule ; $40 = Large life capsule .dw GotExtraLife ; $41 = Extralife .dw GotMagnetBeam ; $42 = Magnet beam .dw GotTeleportation .dw GotLevelEndItem .dw GotYashichi TestShotHit ; Input: X = object number 0001C8B2: A6 2F ldx RefObjectNumber 0001C8B4: BD 20 04 lda ObjectFlags,x 0001C8B7: 29 20 and #$20 0001C8B9: F0 02 beq + ; $C8BD - 0001C8BB: 18 clc 0001C8BC: 60 rts + 0001C8BD: BC 00 04 ldy ObjectSpriteNum,x 0001C8C0: B9 E9 FA lda TableObjectXWidthTable2,y ; * 0001C8C3: 85 01 sta $01 0001C8C5: B9 B7 FB lda TableObjectYHeightTable2,y ; * 0001C8C8: 85 02 sta $02 0001C8CA: BD 00 06 lda ObjectPosY,x 0001C8CD: C9 F8 cmp #$F8 0001C8CF: F0 EA beq - ; $C8BB 0001C8D1: 38 sec 0001C8D2: E5 02 sbc $02 0001C8D4: 85 03 sta $03 0001C8D6: 06 02 asl $02 0001C8D8: 18 clc 0001C8D9: 65 02 adc $02 0001C8DB: 85 02 sta $02 0001C8DD: 38 sec 0001C8DE: BD 80 04 lda ObjectPosX,x 0001C8E1: E5 1A sbc ScrollPosX 0001C8E3: 38 sec 0001C8E4: E5 01 sbc $01 0001C8E6: 85 00 sta $00 0001C8E8: 06 01 asl $01 0001C8EA: 18 clc 0001C8EB: 65 01 adc $01 0001C8ED: 85 01 sta $01 0001C8EF: A5 3E lda BossCurrentStrategy 0001C8F1: C9 05 cmp #$05 0001C8F3: 90 29 bcc +++ ; $C91E 0001C8F5: A5 56 lda BossBlinkState 0001C8F7: D0 25 bne +++ ; $C91E ; Test if boss has been hit with any of Megaman's weapons 0001C8F9: A2 01 ldx #$01 0001C8FB: 20 C2 C9 jsr TestCollisionWithWeapon ; $C9C2 0001C8FE: 90 1E bcc +++ ; $C91E ; It was a boss. Store object number into $0C 0001C900: 86 0C stx $0C ; Subtract from boss's energy depending on which weapon is used 0001C902: A5 AC lda FightingBossNum ; $AC = which boss we're fighting 0001C904: 0A asl a 0001C905: 0A asl a 0001C906: 0A asl a 0001C907: 18 clc 0001C908: 65 5F adc WeaponSelect 0001C90A: AA tax 0001C90B: 38 sec 0001C90C: AD C1 06 lda ObjectLifeMeter+1 0001C90F: FD 22 FE sbc WeaponDamageOnBoss,x ; * 0001C912: F0 02 beq + ; $C916 0001C914: B0 0B bcs ++ ; $C921 + ; Boss's life meter emptied 0001C916: A9 00 lda #$00 0001C918: 8D C1 06 sta ObjectLifeMeter+1 0001C91B: 4C 2D CA jmp BossKilled +++ 0001C91E: 4C 6D C9 jmp TestEnemyDamages ++ 0001C921: 8D C1 06 sta ObjectLifeMeter+1 0001C924: A5 31 lda CurrentStage 0001C926: C9 06 cmp #$06 0001C928: F0 39 beq + ; $C963 0001C92A: C9 09 cmp #$09 0001C92C: F0 35 beq + ; $C963 0001C92E: A2 16 ldx #$16 0001C930: 20 76 C5 jsr FindFreeObject ; FindFreeObject 0001C933: B0 2E bcs + ; $C963 0001C935: A5 2F lda RefObjectNumber 0001C937: 48 pha 0001C938: A9 01 lda #$01 0001C93A: 85 2F sta RefObjectNumber 0001C93C: 20 7B F6 jsr InitActor 0001C93F: A9 19 lda #$19 0001C941: 9D 00 04 sta ObjectSpriteNum,x 0001C944: FE 40 04 inc ObjectUnknown440,x 0001C947: A0 08 ldy #$08 0001C949: 20 33 F5 jsr InitObjectDefaultSpeed 0001C94C: A9 08 lda #$08 0001C94E: 9D 20 04 sta ObjectFlags,x 0001C951: 9D 60 06 sta ObjectYSpeedFraction,x 0001C954: BD 00 06 lda ObjectPosY,x 0001C957: A4 31 ldy CurrentStage 0001C959: 38 sec 0001C95A: F9 89 C9 sbc TableC989,y 0001C95D: 9D 00 06 sta ObjectPosY,x 0001C960: 68 pla 0001C961: 85 2F sta RefObjectNumber + 0001C963: A4 AC ldy FightingBossNum 0001C965: B9 94 C9 lda BossBlinkLengthTable,y 0001C968: 85 56 sta BossBlinkState 0001C96A: 4C A9 C9 jmp $C9A9 TestEnemyDamages ; Test enemies 10,12,14,.. on even frames and 11,13,15,.. on odd frames 0001C96D: A5 23 lda FrameCounter 0001C96F: 29 01 and #$01 0001C971: 18 clc 0001C972: 69 10 adc #$10 0001C974: AA tax - 0001C975: BD 20 04 lda ObjectFlags,x 0001C978: 29 80 and #$80 0001C97A: D0 05 bne + ; $C981 0001C97C: 20 C2 C9 jsr TestCollisionWithWeapon ; $C9C2 0001C97F: B0 1E bcs ++ ; $C99F + 0001C981: E8 inx 0001C982: E8 inx 0001C983: E4 54 cpx TotalObjects 0001C985: 90 EE bcc - ; $C975 0001C987: 18 clc 0001C988: 60 rts TableC989: .byt 4,0,0,8,0,4,0,0,0,0,0 BossBlinkLengthTable ;at C994. Values for BossBlinkState for each boss. .byte $3F, $1E, $1E, $1E, $3F, $1E .byte $09, $3F, $1E, $09, $09 ++ 0001C99F: 86 0C stx $0C ; Make object get hit 0001C9A1: BD 20 04 lda ObjectFlags,x 0001C9A4: 09 80 ora #$80 0001C9A6: 9D 20 04 sta ObjectFlags

nothing at of , which is