diff --git a/compasses.asm b/compasses.asm index b9ce11d..e36d333 100644 --- a/compasses.asm +++ b/compasses.asm @@ -10,33 +10,42 @@ DrawDungeonCompassCounts: LDA.w $040C : AND.w #$00FE : TAX ; force dungeon ID to be multiple of 2 PLA - CPX.b #$1B : BCS .done ; Skip if not in a valid dungeon ID - + CPX.b #$1B : BCC + ; Skip if not in a valid dungeon ID + JMP .done + + CMP.w #$0002 : BEQ ++ ; if CompassMode==2, we don't check for the compass TXY : TXA : LSR : TAX : LDA.l ExistsTransfer, X : TAX : LDA CompassExists, X : BEQ ++ TYX : LDA $7EF364 : AND.l DungeonItemMasks, X ; Load compass values to A, mask with dungeon item masks - BEQ .done ; skip if we don't have compass + BNE ++ + JMP .done ; skip if we don't have compass ++ LDA $040C : LSR BNE + INC + TAX : LDA.l CompassTotal, X : AND #$00FF - SEP #$20 - JSR HudHexToDec3Digit - REP #$20 PHX - LDX.b $06 : TXA : ORA #$2400 : STA $7EC79A - LDX.b $07 : TXA : ORA #$2400 : STA $7EC79C + PHA + JSL HexToDec_fast + PLA : CMP.w #100 : !BLT .two_digit + LDX.b $05 : TXA : ORA #$2490 : STA $7EC79A + LDX.b $06 : TXA : ORA #$2490 : STA $7EC79C + LDX.b $07 : TXA : ORA #$2490 : STA $7EC79E + BRA .end_total + .two_digit + LDX.b $06 : TXA : ORA #$2490 : STA $7EC79A + LDX.b $07 : TXA : ORA #$2490 : STA $7EC79C + .end_total PLX LDA $7EF4BF, X : AND #$00FF - SEP #$20 - JSR HudHexToDec3Digit - REP #$20 - - LDX.b $06 : TXA : ORA #$2400 : STA $7EC794 ; Draw the item count - LDX.b $07 : TXA : ORA #$2400 : STA $7EC796 + PHA + JSL HexToDec_fast + PLA : CMP.w #100 : !BLT + + LDX.b $05 : TXA : ORA #$2490 : STA $7EC792 ; Draw the 100's digit + + + LDX.b $06 : TXA : ORA #$2490 : STA $7EC794 ; Draw the item count + LDX.b $07 : TXA : ORA #$2490 : STA $7EC796 LDA.w #$2830 : STA $7EC798 ; draw the slash diff --git a/contrib.asm b/contrib.asm index bcc6ca0..a208503 100644 --- a/contrib.asm +++ b/contrib.asm @@ -183,3 +183,4 @@ Sprite_ShowSolicitedMessageIfPlayerFacing_PreserveMessage: ;================================================================ incsrc menu/hudalpha.asm +incsrc util/utils.asm diff --git a/hudadditions.asm b/hudadditions.asm index 607993d..fc4f5df 100644 --- a/hudadditions.asm +++ b/hudadditions.asm @@ -7,23 +7,36 @@ DrHudOverride: HudAdditions: { - lda.l DRFlags : and #$0008 : beq ++ -; LDA.w #$28A4 : STA !GOAL_DRAW_ADDRESS - lda $7EF423 - jsr HudHexToDec4DigitCopy - LDX.b $05 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+2 ; draw 100's digit - LDX.b $06 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+4 ; draw 10's digit - LDX.b $07 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+6 ; draw 1's digit + LDA.l DRFlags : AND #$0008 : BNE + : JMP .end_item_count : + + LDA.l $7EF423 : PHA : CMP #1000 : !BLT + + JSL HexToDec4Digit_fast + LDX.b $04 : TXA : ORA.w #$2490 : STA !GOAL_DRAW_ADDRESS ; draw 1000's digit + BRA .skip + + JSL HexToDec_fast + .skip + PLA : PHA : CMP.w #100 : !BLT + + LDX.b $05 : TXA : ORA.w #$2490 : STA !GOAL_DRAW_ADDRESS+2 ; draw 100's digit + + PLA : CMP.w #10 : !BLT + + LDX.b $06 : TXA : ORA.w #$2490 : STA !GOAL_DRAW_ADDRESS+4 ; draw 10's digit + + LDX.b $07 : TXA : ORA.w #$2490 : STA !GOAL_DRAW_ADDRESS+6 ; draw 1's digit LDA.w #$2830 : STA !GOAL_DRAW_ADDRESS+8 ; draw slash LDA.l DRFlags : AND #$0100 : BNE + - lda $7EF33E - jsr HudHexToDec4DigitCopy - LDX.b $05 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+10 ; draw 100's digit - LDX.b $06 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+12 ; draw 10's digit - LDX.b $07 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+14 ; draw 1's digit - BRA ++ - + LDA.w #$2405 : STA !GOAL_DRAW_ADDRESS+10 : STA !GOAL_DRAW_ADDRESS+12 : STA !GOAL_DRAW_ADDRESS+14 - ++ + LDA.l $7EF33E : CMP #1000 : !BLT .three_digit_goal + JSL HexToDec4Digit_fast + LDX.b $04 : TXA : ORA.w #$2490 : STA !GOAL_DRAW_ADDRESS+10 ; draw 1000's digit + LDX.b $05 : TXA : ORA.w #$2490 : STA !GOAL_DRAW_ADDRESS+12 ; draw 100's digit + LDX.b $06 : TXA : ORA.w #$2490 : STA !GOAL_DRAW_ADDRESS+14 ; draw 10's digit + LDX.b $07 : TXA : ORA.w #$2490 : STA !GOAL_DRAW_ADDRESS+16 ; draw 1's digit + BRA .end_item_count + .three_digit_goal + JSL HexToDec_fast + LDX.b $05 : TXA : ORA.w #$2490 : STA !GOAL_DRAW_ADDRESS+10 ; draw 100's digit + LDX.b $06 : TXA : ORA.w #$2490 : STA !GOAL_DRAW_ADDRESS+12 ; draw 10's digit + LDX.b $07 : TXA : ORA.w #$2490 : STA !GOAL_DRAW_ADDRESS+14 ; draw 1's digit + BRA .end_item_count + + LDA.w #$2405 : STA !GOAL_DRAW_ADDRESS+10 : STA !GOAL_DRAW_ADDRESS+12 + STA !GOAL_DRAW_ADDRESS+14 : STA !GOAL_DRAW_ADDRESS+16 + .end_item_count LDX $1B : BNE + : RTS : + ; Skip if outdoors ldx $040c : cpx #$ff : bne + : rts : + ; Skip if not in dungeon diff --git a/keydrop/standing_items.asm b/keydrop/standing_items.asm index 0ea03bd..b4d898b 100644 --- a/keydrop/standing_items.asm +++ b/keydrop/standing_items.asm @@ -39,6 +39,12 @@ org $008BAA ; NMI hook org $06828A JSL CheckSprite_Spawn +org $07B169 + JSL PreventPotSpawn : NOP + +org $07B17D + JSL PreventPotSpawn2 + ; refs to other functions org $06d23a @@ -148,6 +154,26 @@ RevealPotItem: .normal_secret STA $08 + + PHY : PHX + INY : INY : LDA [$00], Y : AND #$00FF : CMP #$0080 : BCS .obtained + ; set bit and count if first time lifting this pot + LDA.b $A0 : ASL : TAY + TXA : ASL : TAX : LDA.l BitFieldMasks, X : STA $0A + TYX : LDA.l PotItemSRAM, X : BIT $0A : BNE .obtained + ORA $0A : STA PotItemSRAM, X + SEP #$30 + ; increment dungeon counts + LDA $040C : CMP #$FF : BEQ + + BNE ++ + INC #2 ; treat sewers as HC + ++ LSR : TAX : LDA $7EF4BF, X : INC : STA $7EF4BF, X + ; Could increment GT Tower Pre Big Key but we aren't showing that stat right now + + REP #$30 + LDA $7EF423 : INC : STA $7EF423 ; Increment Item Total + .obtained + PLX : PLY + PLA ; remove the JSL return lower 16 bits LDA $08 PEA.w $01E6E2-1 ; change return address to go back to the vanilla routine @@ -398,13 +424,37 @@ CheckSprite_Spawn: BMI .check RTL .check - PHA - LDA $0D : CMP #$08 : BNE + - LDA.b #$3C ; SFX2_3C - error beep - STA.w $012E - + PLA + LDA $0D : CMP #$08 : BNE + + LDX #$0F + + ; loop looking for EC + - LDA $0E20, X : CMP #$EC : BEQ .foundIt + DEX : BMI .error : BRA - + + .foundIt + LDA #$00 : STZ $0DD0, X + LDA #$E4 : JSL Sprite_SpawnDynamically + BMI .error + LDA #$40 : TSB $0308 : RTL + + .error + LDA.b #$3C ; SFX2_3C - error beep + STA.w $012E + + LDA #$FF RTL +PreventPotSpawn: + LDA #$40 : BIT $0308 : BEQ + + STZ $0308 : RTL + + LDA.b #$80 : STA.w $0308 ; what we wrote over +RTL + +PreventPotSpawn2: + LDA $0308 : BEQ + + LDA.b #$01 : TSB.b $50 ; what we wrote over ++ RTL + + incsrc dynamic_si_vram.asm ;=================================================================================================== diff --git a/stats/creditsnew.asm b/stats/creditsnew.asm index 94b4f05..1d00145 100644 --- a/stats/creditsnew.asm +++ b/stats/creditsnew.asm @@ -16,15 +16,17 @@ db " " ; $238020 CollectionRateHi: db 2, 55 db $5F, $6B, $68, $68, $61, $5F, $70, $65, $6B, $6A, $9F, $6E, $5D, $70, $61 ; "Collection Rate" -db $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2 ; " /" +db $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F ; " " 8 spaces print "Collection Rate High Start: ", pc +db $9F, $A2 ; " /" db $55, $54, $59 ; 216 CollectionRateLo: db 2, 55 db $85, $91, $8E, $8E, $87, $85, $96, $8B, $91, $90, $9F, $94, $83, $96, $87 ; "Collection Rate" -db $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2 ; " /" +db $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F ; " " 8 spaces print "Collection Rate Low Start: ", pc +db $9F, $C2 ; " /" db $7B, $7A, $7F ; 216 ;=================================================================================================== diff --git a/stats/statConfig.asm b/stats/statConfig.asm index f12d717..cf276fd 100755 --- a/stats/statConfig.asm +++ b/stats/statConfig.asm @@ -17,5 +17,6 @@ %AddStat($7EF453, 0, 0, 08, 3, !FAERIE_REVIVALS_X, !FAERIE_REVIVALS_Y) %AddStat($7EF444, 1, 8, 32, 4, !TOTAL_MENU_TIME_X, !TOTAL_MENU_TIME_Y) %AddStat($7F5038, 1, 0, 32, 4, !TOTAL_LAG_TIME_X, !TOTAL_LAG_TIME_Y) +print "Collection Rate Stat Config: ", pc %AddStat($7EF423, 0, 0, 10, 3, !COLLECTION_RATE_X, !COLLECTION_RATE_Y) %AddStat($7EF43E, 1, 0, 32, 4, !TOTAL_TIME_X, !TOTAL_TIME_Y) diff --git a/util/utils.asm b/util/utils.asm new file mode 100644 index 0000000..32ae59f --- /dev/null +++ b/util/utils.asm @@ -0,0 +1,128 @@ +HexToDec4Digit_fast: + LDY.b #$00 + - + CMP.w #1000 : !BLT + + INY + SBC.w #1000 : BRA - + + + STY $04 + JSR hex_to_dec_fast +RTL + +HexToDec_fast: + JSR hex_to_dec_fast +RTL + +hex_to_dec_fast: + PHP + REP #$30 + ASL : TAX + LDA.l hex_to_dec_fast_table,X + TAY : XBA : AND.w #$000F : STA.b $05 + TYA : AND.w #$00F0 : LSR #4 : STA.b $06 + TYA : AND.w #$000F : STA.b $07 + PLP +RTS + + +hex_to_dec_fast_table: + dw $000, $001, $002, $003, $004, $005, $006, $007, $008, $009 + dw $010, $011, $012, $013, $014, $015, $016, $017, $018, $019 + dw $020, $021, $022, $023, $024, $025, $026, $027, $028, $029 + dw $030, $031, $032, $033, $034, $035, $036, $037, $038, $039 + dw $040, $041, $042, $043, $044, $045, $046, $047, $048, $049 + dw $050, $051, $052, $053, $054, $055, $056, $057, $058, $059 + dw $060, $061, $062, $063, $064, $065, $066, $067, $068, $069 + dw $070, $071, $072, $073, $074, $075, $076, $077, $078, $079 + dw $080, $081, $082, $083, $084, $085, $086, $087, $088, $089 + dw $090, $091, $092, $093, $094, $095, $096, $097, $098, $099 + dw $100, $101, $102, $103, $104, $105, $106, $107, $108, $109 + dw $110, $111, $112, $113, $114, $115, $116, $117, $118, $119 + dw $120, $121, $122, $123, $124, $125, $126, $127, $128, $129 + dw $130, $131, $132, $133, $134, $135, $136, $137, $138, $139 + dw $140, $141, $142, $143, $144, $145, $146, $147, $148, $149 + dw $150, $151, $152, $153, $154, $155, $156, $157, $158, $159 + dw $160, $161, $162, $163, $164, $165, $166, $167, $168, $169 + dw $170, $171, $172, $173, $174, $175, $176, $177, $178, $179 + dw $180, $181, $182, $183, $184, $185, $186, $187, $188, $189 + dw $190, $191, $192, $193, $194, $195, $196, $197, $198, $199 + dw $200, $201, $202, $203, $204, $205, $206, $207, $208, $209 + dw $210, $211, $212, $213, $214, $215, $216, $217, $218, $219 + dw $220, $221, $222, $223, $224, $225, $226, $227, $228, $229 + dw $230, $231, $232, $233, $234, $235, $236, $237, $238, $239 + dw $240, $241, $242, $243, $244, $245, $246, $247, $248, $249 + dw $250, $251, $252, $253, $254, $255, $256, $257, $258, $259 + dw $260, $261, $262, $263, $264, $265, $266, $267, $268, $269 + dw $270, $271, $272, $273, $274, $275, $276, $277, $278, $279 + dw $280, $281, $282, $283, $284, $285, $286, $287, $288, $289 + dw $290, $291, $292, $293, $294, $295, $296, $297, $298, $299 + dw $300, $301, $302, $303, $304, $305, $306, $307, $308, $309 + dw $310, $311, $312, $313, $314, $315, $316, $317, $318, $319 + dw $320, $321, $322, $323, $324, $325, $326, $327, $328, $329 + dw $330, $331, $332, $333, $334, $335, $336, $337, $338, $339 + dw $340, $341, $342, $343, $344, $345, $346, $347, $348, $349 + dw $350, $351, $352, $353, $354, $355, $356, $357, $358, $359 + dw $360, $361, $362, $363, $364, $365, $366, $367, $368, $369 + dw $370, $371, $372, $373, $374, $375, $376, $377, $378, $379 + dw $380, $381, $382, $383, $384, $385, $386, $387, $388, $389 + dw $390, $391, $392, $393, $394, $395, $396, $397, $398, $399 + dw $400, $401, $402, $403, $404, $405, $406, $407, $408, $409 + dw $410, $411, $412, $413, $414, $415, $416, $417, $418, $419 + dw $420, $421, $422, $423, $424, $425, $426, $427, $428, $429 + dw $430, $431, $432, $433, $434, $435, $436, $437, $438, $439 + dw $440, $441, $442, $443, $444, $445, $446, $447, $448, $449 + dw $450, $451, $452, $453, $454, $455, $456, $457, $458, $459 + dw $460, $461, $462, $463, $464, $465, $466, $467, $468, $469 + dw $470, $471, $472, $473, $474, $475, $476, $477, $478, $479 + dw $480, $481, $482, $483, $484, $485, $486, $487, $488, $489 + dw $490, $491, $492, $493, $494, $495, $496, $497, $498, $499 + dw $500, $501, $502, $503, $504, $505, $506, $507, $508, $509 + dw $510, $511, $512, $513, $514, $515, $516, $517, $518, $519 + dw $520, $521, $522, $523, $524, $525, $526, $527, $528, $529 + dw $530, $531, $532, $533, $534, $535, $536, $537, $538, $539 + dw $540, $541, $542, $543, $544, $545, $546, $547, $548, $549 + dw $550, $551, $552, $553, $554, $555, $556, $557, $558, $559 + dw $560, $561, $562, $563, $564, $565, $566, $567, $568, $569 + dw $570, $571, $572, $573, $574, $575, $576, $577, $578, $579 + dw $580, $581, $582, $583, $584, $585, $586, $587, $588, $589 + dw $590, $591, $592, $593, $594, $595, $596, $597, $598, $599 + dw $600, $601, $602, $603, $604, $605, $606, $607, $608, $609 + dw $610, $611, $612, $613, $614, $615, $616, $617, $618, $619 + dw $620, $621, $622, $623, $624, $625, $626, $627, $628, $629 + dw $630, $631, $632, $633, $634, $635, $636, $637, $638, $639 + dw $640, $641, $642, $643, $644, $645, $646, $647, $648, $649 + dw $650, $651, $652, $653, $654, $655, $656, $657, $658, $659 + dw $660, $661, $662, $663, $664, $665, $666, $667, $668, $669 + dw $670, $671, $672, $673, $674, $675, $676, $677, $678, $679 + dw $680, $681, $682, $683, $684, $685, $686, $687, $688, $689 + dw $690, $691, $692, $693, $694, $695, $696, $697, $698, $699 + dw $700, $701, $702, $703, $704, $705, $706, $707, $708, $709 + dw $710, $711, $712, $713, $714, $715, $716, $717, $718, $719 + dw $720, $721, $722, $723, $724, $725, $726, $727, $728, $729 + dw $730, $731, $732, $733, $734, $735, $736, $737, $738, $739 + dw $740, $741, $742, $743, $744, $745, $746, $747, $748, $749 + dw $750, $751, $752, $753, $754, $755, $756, $757, $758, $759 + dw $760, $761, $762, $763, $764, $765, $766, $767, $768, $769 + dw $770, $771, $772, $773, $774, $775, $776, $777, $778, $779 + dw $780, $781, $782, $783, $784, $785, $786, $787, $788, $789 + dw $790, $791, $792, $793, $794, $795, $796, $797, $798, $799 + dw $800, $801, $802, $803, $804, $805, $806, $807, $808, $809 + dw $810, $811, $812, $813, $814, $815, $816, $817, $818, $819 + dw $820, $821, $822, $823, $824, $825, $826, $827, $828, $829 + dw $830, $831, $832, $833, $834, $835, $836, $837, $838, $839 + dw $840, $841, $842, $843, $844, $845, $846, $847, $848, $849 + dw $850, $851, $852, $853, $854, $855, $856, $857, $858, $859 + dw $860, $861, $862, $863, $864, $865, $866, $867, $868, $869 + dw $870, $871, $872, $873, $874, $875, $876, $877, $878, $879 + dw $880, $881, $882, $883, $884, $885, $886, $887, $888, $889 + dw $890, $891, $892, $893, $894, $895, $896, $897, $898, $899 + dw $900, $901, $902, $903, $904, $905, $906, $907, $908, $909 + dw $910, $911, $912, $913, $914, $915, $916, $917, $918, $919 + dw $920, $921, $922, $923, $924, $925, $926, $927, $928, $929 + dw $930, $931, $932, $933, $934, $935, $936, $937, $938, $939 + dw $940, $941, $942, $943, $944, $945, $946, $947, $948, $949 + dw $950, $951, $952, $953, $954, $955, $956, $957, $958, $959 + dw $960, $961, $962, $963, $964, $965, $966, $967, $968, $969 + dw $970, $971, $972, $973, $974, $975, $976, $977, $978, $979 + dw $980, $981, $982, $983, $984, $985, $986, $987, $988, $989 + dw $990, $991, $992, $993, $994, $995, $996, $997, $998, $999 \ No newline at end of file